diff --git a/VOL.Ai/IRepositories/IAiAppVersionRepository.cs b/VOL.Ai/IRepositories/IAiAppVersionRepository.cs
new file mode 100644
index 0000000..75affe2
--- /dev/null
+++ b/VOL.Ai/IRepositories/IAiAppVersionRepository.cs
@@ -0,0 +1,19 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using VOL.Core.BaseProvider;
+using VOL.Core.Extensions.AutofacManager;
+using VOL.Entity.DomainModels;
+
+namespace VOL.Ai.IRepositories
+{
+ ///
+ /// App版本信息
+ ///
+ public interface IAiAppVersionRepository : IDependency, IRepository
+ {
+
+ }
+}
diff --git a/VOL.Ai/IServices/IAiAppService.cs b/VOL.Ai/IServices/IAiAppService.cs
index a0b49be..01ff260 100644
--- a/VOL.Ai/IServices/IAiAppService.cs
+++ b/VOL.Ai/IServices/IAiAppService.cs
@@ -218,6 +218,13 @@ namespace VOL.Ai.IServices
///
Task LogOut(LoginOutDto paramDto);
+ ///
+ /// 获取版本号
+ ///
+ ///
+ ///
+ Task AiAppVersion(Ai_AppVersionRequest paramDto);
+
///
/// 获取课堂记录列表
///
diff --git a/VOL.Ai/Repositories/AiAppVersionRepository.cs b/VOL.Ai/Repositories/AiAppVersionRepository.cs
new file mode 100644
index 0000000..042c018
--- /dev/null
+++ b/VOL.Ai/Repositories/AiAppVersionRepository.cs
@@ -0,0 +1,30 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using VOL.Ai.IRepositories;
+using VOL.Core.BaseProvider;
+using VOL.Core.EFDbContext;
+using VOL.Core.Extensions.AutofacManager;
+using VOL.Entity.DomainModels;
+
+namespace VOL.Ai.Repositories
+{
+ ///
+ /// App版本信息
+ ///
+ public class AiAppVersionRepository : RepositoryBase, IAiAppVersionRepository
+ {
+ public AiAppVersionRepository(VOLContext dbContext)
+ : base(dbContext)
+ {
+
+ }
+
+ public static IAiAppVersionRepository Instance
+ {
+ get { return AutofacContainerModule.GetService(); }
+ }
+ }
+}
diff --git a/VOL.Ai/Services/AiAppService.cs b/VOL.Ai/Services/AiAppService.cs
index e0ad3ab..c7c8e00 100644
--- a/VOL.Ai/Services/AiAppService.cs
+++ b/VOL.Ai/Services/AiAppService.cs
@@ -36,6 +36,7 @@ namespace VOL.Ai.Services
private readonly IN_SportsTestCategoryRepository _sportsTestCategoryRepository;
private readonly IN_HealthStandardsRepository _healthStandardsRepository;
private readonly IScanCodeLoginRepository _scanCodeLoginRepository;
+ private readonly IAiAppVersionRepository _aiAppVersionRepository;
private readonly IN_SportsTrainingCategoryRepository _sportsTrainingCategoryRepository;
private readonly IClassRoomRecordRepository _classRoomRecordRepository;
private readonly IHeartRateDataRepository _heartRateDataRepository;
@@ -67,7 +68,8 @@ namespace VOL.Ai.Services
IFastJumpRopeDataRepository fastJumpRopeDataRepository,
ISys_UserRepository userRepository,
IClassroomStageRepository classroomStageRepository,
- IClassroomSettingRepository classroomSettingRepository
+ IClassroomSettingRepository classroomSettingRepository,
+ IAiAppVersionRepository aiAppVersionRepository
)
{
_mapper = mapper;
@@ -88,6 +90,7 @@ namespace VOL.Ai.Services
_userRepository = userRepository;
_classroomStageRepository = classroomStageRepository;
_classroomSettingRepository = classroomSettingRepository;
+ _aiAppVersionRepository = aiAppVersionRepository;
}
#region New
@@ -1006,6 +1009,7 @@ namespace VOL.Ai.Services
{
GroupId = x.GroupId,
ModeType = x.ModeType,
+ //ModelName = x.ModeType.GetDescription(),
ModelName = x.ModelName,
MotionDuration = x.MotionDuration,
ScoreTime = x.ScoreTime,
@@ -1252,7 +1256,7 @@ namespace VOL.Ai.Services
if (loginInfo == null)
return new Ai_TeacherFaceInfo();
- var res = await _teacherRepository.FindAsIQueryable(x => x.SchoolCode == paramDto.SchoolCode && x.TeacherStatus != TeacherStatus.Depart && x.TeacherPhoneNo == loginInfo.TeacherPhoneNo && x.Id == loginInfo.TeacherId)
+ var res = await _teacherRepository.FindAsIQueryable(x => x.SchoolCode == paramDto.SchoolCode && x.TeacherStatus != TeacherStatus.Depart && x.TeacherPhoneNo == loginInfo.TeacherPhoneNo)
.Select(x =>
new Ai_TeacherFaceInfo()
{
@@ -1281,6 +1285,9 @@ namespace VOL.Ai.Services
res.GradeAndClassList = grades;
+ _scanCodeLoginRepository.Delete(loginInfo);
+ await _scanCodeLoginRepository.SaveChangesAsync();
+
return res;
}
@@ -1343,6 +1350,28 @@ namespace VOL.Ai.Services
return await _teacherRepository.SaveChangesAsync() > 0;
}
+ ///
+ /// 获取版本号
+ ///
+ ///
+ ///
+ public async Task AiAppVersion(Ai_AppVersionRequest paramDto)
+ {
+ var res = await _aiAppVersionRepository.FindAsIQueryable(x => x.AppType == paramDto.AppType)
+ .Select(x => new Ai_AppVersionDto()
+ {
+ Id = x.Id,
+ AppType = x.AppType,
+ Remarks = x.Remarks,
+ Version = x.Version,
+ Url = x.Url,
+ CreateDate = x.CreateDate
+ }).OrderByDescending(x => x.CreateDate)
+ .FirstOrDefaultAsync();
+
+ return res ?? new Ai_AppVersionDto();
+ }
+
///
/// 获取课堂记录列表
///
@@ -1364,8 +1393,9 @@ namespace VOL.Ai.Services
.Take(paramDto.PageSize)
.Select(x => new Ai_ClassRoomRecordPageListDto
{
+ ClassRoomRecordId = x.Id,
GradeAndClassName = $"{x.GradeName}-{x.ClassName}",
- StartEndTime = $"{x.StartTime.ToString("yyyy-MM-dd HH:mm")}-{x.EndTime.ToString("yyyy-MM-dd HH:mm")}",
+ StartEndTime = x.EndTime == null || x.EndTime == DateTime.MinValue ? $"{x.StartTime:yyyy-MM-dd HH:mm}" : $"{x.StartTime:yyyy-MM-dd HH:mm} 至 {x.EndTime:yyyy-MM-dd HH:mm}",
TeacherName = x.TeacherName
}).ToListAsync();
diff --git a/VOL.Core/Migrations/20250804030454_20250804v1.Designer.cs b/VOL.Core/Migrations/20250804030454_20250804v1.Designer.cs
new file mode 100644
index 0000000..0566100
--- /dev/null
+++ b/VOL.Core/Migrations/20250804030454_20250804v1.Designer.cs
@@ -0,0 +1,7528 @@
+//
+using System;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using VOL.Core.EFDbContext;
+
+#nullable disable
+
+namespace VOL.Core.Migrations
+{
+ [DbContext(typeof(VOLContext))]
+ [Migration("20250804030454_20250804v1")]
+ partial class _20250804v1
+ {
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "6.0.0")
+ .HasAnnotation("Relational:MaxIdentifierLength", 128);
+
+ SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder, 1L, 1);
+
+ modelBuilder.Entity("VOL.Entity.DomainModels.Ai_ActivitiestData", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int")
+ .HasComment("Id");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1);
+
+ b.Property("ActivitiesId")
+ .HasColumnType("int")
+ .HasComment("活动Id");
+
+ b.Property("AdditionalScore")
+ .HasColumnType("float")
+ .HasComment("附加分");
+
+ b.Property("CategoryValue")
+ .HasColumnType("int")
+ .HasComment("项目类型");
+
+ b.Property("ClassId")
+ .HasColumnType("int")
+ .HasComment("班级Id");
+
+ b.Property("ClassName")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("班级名称");
+
+ b.Property("ClassRoomRecordId")
+ .HasColumnType("int")
+ .HasComment("课堂记录Id");
+
+ b.Property("Code")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("AI设备的唯一编码");
+
+ b.Property("CorrectJudge")
+ .HasColumnType("nvarchar(4000)")
+ .HasComment("动作解析");
+
+ b.Property("CorrectNumber")
+ .HasColumnType("int")
+ .HasComment("正确个数");
+
+ b.Property("DataType")
+ .HasColumnType("int")
+ .HasComment("模式类型");
+
+ b.Property("Duration")
+ .HasColumnType("int")
+ .HasComment("持续时间");
+
+ b.Property("EndTime")
+ .HasColumnType("datetime")
+ .HasComment("结束时间");
+
+ b.Property("ErrorNumber")
+ .HasColumnType("int")
+ .HasComment("错误个数");
+
+ b.Property("GradeId")
+ .HasColumnType("int")
+ .HasComment("年级编号");
+
+ b.Property("GradeName")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("年级名称");
+
+ b.Property("IsDisplay")
+ .HasColumnType("bit")
+ .HasComment("是否显示");
+
+ b.Property("MaxValue")
+ .HasColumnType("int")
+ .HasComment("最大");
+
+ b.Property("MinValue")
+ .HasColumnType("int")
+ .HasComment("最小");
+
+ b.Property("ModeType")
+ .HasColumnType("int")
+ .HasComment("模式类型");
+
+ b.Property("ModelName")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("模式名称");
+
+ b.Property("MotionDuration")
+ .HasColumnType("int")
+ .HasComment("运动时长/分钟");
+
+ b.Property("Rank")
+ .HasColumnType("int")
+ .HasComment("训练成绩等级");
+
+ b.Property("RankStr")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("等级");
+
+ b.Property("Remark")
+ .HasColumnType("nvarchar(4000)")
+ .HasComment("设备评价语");
+
+ b.Property("SchoolCode")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("学校Code");
+
+ b.Property("Score")
+ .HasColumnType("float")
+ .HasComment("得分");
+
+ b.Property("ScoreTime")
+ .HasColumnType("datetime")
+ .HasComment("测试时间");
+
+ b.Property("Semester")
+ .HasColumnType("int)")
+ .HasComment("学期");
+
+ b.Property("Sex")
+ .HasColumnType("int")
+ .HasComment("学校Co性别de");
+
+ b.Property("StartTime")
+ .HasColumnType("datetime")
+ .HasComment("开始时间");
+
+ b.Property("StudentName")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("姓名");
+
+ b.Property("StudentNo")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("学号");
+
+ b.Property("TeacherId")
+ .HasColumnType("int")
+ .HasComment("老师Id");
+
+ b.Property("UniqueId")
+ .HasColumnType("bigint")
+ .HasComment("设备上传成绩时唯一标识, 重复时服务端不保存数据");
+
+ b.Property("Value")
+ .HasColumnType("float")
+ .HasComment("测试成绩");
+
+ b.Property("WrongResults")
+ .HasColumnType("float")
+ .HasComment("错误成绩");
+
+ b.Property("Year")
+ .HasColumnType("int)")
+ .HasComment("当前年份");
+
+ b.HasKey("Id");
+
+ b.ToTable("Ai_ActivitiestData");
+ });
+
+ modelBuilder.Entity("VOL.Entity.DomainModels.Ai_AppVersion", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int")
+ .HasComment("Id");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1);
+
+ b.Property("AppType")
+ .HasColumnType("int")
+ .HasComment("AppType");
+
+ b.Property("Remarks")
+ .HasColumnType("nvarchar(2000)")
+ .HasComment("备注");
+
+ b.Property("Url")
+ .HasColumnType("nvarchar(2000)")
+ .HasComment("下载地址");
+
+ b.Property("Version")
+ .HasColumnType("nvarchar(200)")
+ .HasComment("版本号");
+
+ b.HasKey("Id");
+
+ b.ToTable("Ai_AppVersion");
+ });
+
+ modelBuilder.Entity("VOL.Entity.DomainModels.Ai_ClassRoomRecord", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int")
+ .HasComment("Id");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1);
+
+ b.Property("AddCount")
+ .HasColumnType("int")
+ .HasComment("新增人数");
+
+ b.Property("ClassId")
+ .HasColumnType("int")
+ .HasComment("班级Id");
+
+ b.Property("ClassName")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("班级名称");
+
+ b.Property("Code")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("AI设备的唯一编码");
+
+ b.Property("EndTime")
+ .HasColumnType("datetime")
+ .HasComment("结束时间");
+
+ b.Property("GradeId")
+ .HasColumnType("int")
+ .HasComment("年级编号");
+
+ b.Property("GradeName")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("年级名称");
+
+ b.Property("IsDisplay")
+ .HasColumnType("bit")
+ .HasComment("是否显示");
+
+ b.Property("Name")
+ .HasColumnType("nvarchar(200)")
+ .HasComment("名称");
+
+ b.Property("NoParticipateCount")
+ .HasColumnType("int")
+ .HasComment("缺勤人数");
+
+ b.Property("ParticipateCount")
+ .HasColumnType("int")
+ .HasComment("参与人数");
+
+ b.Property("Remarks")
+ .HasColumnType("text")
+ .HasComment("备注");
+
+ b.Property("SchoolCode")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("学校Code");
+
+ b.Property("Semester")
+ .HasColumnType("int)")
+ .HasComment("学期");
+
+ b.Property("StartTime")
+ .HasColumnType("datetime")
+ .HasComment("开始时间");
+
+ b.Property("StudentCount")
+ .HasColumnType("int")
+ .HasComment("班级下学生人数");
+
+ b.Property("TeacherId")
+ .HasColumnType("int")
+ .HasComment("老师Id");
+
+ b.Property("TeacherName")
+ .HasColumnType("nvarchar(200)")
+ .HasComment("老师姓名");
+
+ b.Property("TrainingModuleEnum")
+ .HasColumnType("int")
+ .HasComment("训练模块枚举");
+
+ b.Property("Year")
+ .HasColumnType("int)")
+ .HasComment("当前年份");
+
+ b.HasKey("Id");
+
+ b.ToTable("Ai_ClassRoomRecord");
+ });
+
+ modelBuilder.Entity("VOL.Entity.DomainModels.Ai_ClassroomSetting", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int")
+ .HasComment("Id");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1);
+
+ b.Property("ClassRoomRecordId")
+ .HasColumnType("int")
+ .HasComment("课堂记录Id");
+
+ b.Property("ClassroomStageId")
+ .HasColumnType("int")
+ .HasComment("阶段Id");
+
+ b.Property("Density")
+ .HasColumnType("int")
+ .HasComment("密度");
+
+ b.Property("Duration")
+ .HasColumnType("int")
+ .HasComment("时长");
+
+ b.HasKey("Id");
+
+ b.ToTable("Ai_ClassroomSetting");
+ });
+
+ modelBuilder.Entity("VOL.Entity.DomainModels.Ai_ClassroomStage", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int")
+ .HasComment("Id");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1);
+
+ b.Property("Name")
+ .HasColumnType("nvarchar(200)")
+ .HasComment("名称");
+
+ b.HasKey("Id");
+
+ b.ToTable("Ai_ClassroomStage");
+ });
+
+ modelBuilder.Entity("VOL.Entity.DomainModels.Ai_ClassroomStudentRecord", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int")
+ .HasComment("Id");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1);
+
+ b.Property("Age")
+ .HasColumnType("int")
+ .HasComment("年龄");
+
+ b.Property("ClassId")
+ .HasColumnType("int")
+ .HasComment("班级Id");
+
+ b.Property("ClassName")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("班级名称");
+
+ b.Property("ClassRoomRecordId")
+ .HasColumnType("int")
+ .HasComment("课堂记录Id");
+
+ b.Property("Code")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("AI设备的唯一编码");
+
+ b.Property("GradeId")
+ .HasColumnType("int")
+ .HasComment("年级编号");
+
+ b.Property("GradeName")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("年级名称");
+
+ b.Property("IsDisplay")
+ .HasColumnType("bit")
+ .HasComment("是否显示");
+
+ b.Property("SchoolCode")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("学校Code");
+
+ b.Property("Sex")
+ .HasColumnType("int")
+ .HasComment("学校Co性别de");
+
+ b.Property("StudentName")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("姓名");
+
+ b.Property("StudentNo")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("学号");
+
+ b.Property("TeacherId")
+ .HasColumnType("int")
+ .HasComment("老师Id");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ClassRoomRecordId");
+
+ b.ToTable("Ai_ClassroomStudentRecord");
+ });
+
+ modelBuilder.Entity("VOL.Entity.DomainModels.Ai_Device", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int")
+ .HasComment("Id");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1);
+
+ b.Property("Code")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("AI设备的唯一编码");
+
+ b.Property("CreateDate")
+ .HasColumnType("datetime")
+ .HasComment("创建时间");
+
+ b.Property("Creator")
+ .HasColumnType("int)")
+ .HasComment("创建人");
+
+ b.Property("DeviceType")
+ .HasColumnType("int")
+ .HasComment("设备类型");
+
+ b.Property("EndTime")
+ .HasColumnType("datetime")
+ .HasComment("有效期结束时间");
+
+ b.Property("Modifier")
+ .HasColumnType("int)")
+ .HasComment("修改人");
+
+ b.Property("ModifyDate")
+ .HasColumnType("datetime")
+ .HasComment("修改时间");
+
+ b.Property("Name")
+ .HasColumnType("nvarchar(200)")
+ .HasComment("AI设备名称");
+
+ b.Property("Remarks")
+ .HasColumnType("text")
+ .HasComment("备注");
+
+ b.Property("StartTime")
+ .HasColumnType("datetime")
+ .HasComment("有效期开始时间");
+
+ b.Property("Status")
+ .HasColumnType("int")
+ .HasComment("设备状态 固定值:1:启用2:禁用,禁用的设备无法使用");
+
+ b.HasKey("Id");
+
+ b.ToTable("Ai_Device");
+ });
+
+ modelBuilder.Entity("VOL.Entity.DomainModels.Ai_DeviceAssocSchool", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int")
+ .HasComment("Id");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1);
+
+ b.Property("Code")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("AI设备的唯一编码");
+
+ b.Property("SchoolCode")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("学校编号");
+
+ b.HasKey("Id");
+
+ b.ToTable("Ai_DeviceAssocSchool");
+ });
+
+ modelBuilder.Entity("VOL.Entity.DomainModels.Ai_FastJumpRopeData", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int")
+ .HasComment("Id");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1);
+
+ b.Property("ClassId")
+ .HasColumnType("int")
+ .HasComment("班级Id");
+
+ b.Property("ClassName")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("班级名称");
+
+ b.Property("ClassRoomRecordId")
+ .HasColumnType("int")
+ .HasComment("课堂记录Id");
+
+ b.Property("Code")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("AI设备的唯一编码");
+
+ b.Property("EndTime")
+ .HasColumnType("datetime")
+ .HasComment("结束时间");
+
+ b.Property("ErrorNumber")
+ .HasColumnType("int")
+ .HasComment("错误个数");
+
+ b.Property("GradeId")
+ .HasColumnType("int")
+ .HasComment("年级编号");
+
+ b.Property("GradeName")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("年级名称");
+
+ b.Property("GroupId")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("GroupId");
+
+ b.Property("IsDisplay")
+ .HasColumnType("bit")
+ .HasComment("是否显示");
+
+ b.Property("JumpValue")
+ .HasColumnType("int")
+ .HasComment("正确个数");
+
+ b.Property("ModeType")
+ .HasColumnType("int")
+ .HasComment("模式类型");
+
+ b.Property("ModelName")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("模式名称");
+
+ b.Property("MotionDuration")
+ .HasColumnType("int")
+ .HasComment("运动时长/秒");
+
+ b.Property("Rank")
+ .HasColumnType("int")
+ .HasComment("等级");
+
+ b.Property("RankEnum")
+ .HasColumnType("int")
+ .HasComment("训练成绩等级");
+
+ b.Property("SchoolCode")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("学校Code");
+
+ b.Property("ScoreTime")
+ .HasColumnType("datetime")
+ .HasComment("测试时间");
+
+ b.Property("Sex")
+ .HasColumnType("int")
+ .HasComment("学校Co性别de");
+
+ b.Property("StartTime")
+ .HasColumnType("datetime")
+ .HasComment("开始时间");
+
+ b.Property("StudentCount")
+ .HasColumnType("int")
+ .HasComment("测试人数");
+
+ b.Property("StudentName")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("姓名");
+
+ b.Property("StudentNo")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("学号");
+
+ b.Property("TeacherId")
+ .HasColumnType("int")
+ .HasComment("老师Id");
+
+ b.Property("TrainingModule")
+ .HasColumnType("int")
+ .HasComment("训练模块[[1:专项教学/2:测评考级/3:AI赛场/4:AI体测]/5:速度跳绳");
+
+ b.Property("UniqueId")
+ .HasColumnType("bigint")
+ .HasComment("设备上传成绩时唯一标识, 重复时服务端不保存数据");
+
+ b.HasKey("Id");
+
+ b.ToTable("Ai_FastJumpRopeData");
+ });
+
+ modelBuilder.Entity("VOL.Entity.DomainModels.Ai_HeartRateData", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int")
+ .HasComment("Id");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1);
+
+ b.Property("ClassId")
+ .HasColumnType("int")
+ .HasComment("班级Id");
+
+ b.Property("ClassName")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("班级名称");
+
+ b.Property("ClassRoomRecordId")
+ .HasColumnType("int")
+ .HasComment("课堂记录Id");
+
+ b.Property("ClassroomStageId")
+ .HasColumnType("int")
+ .HasComment("阶段Id");
+
+ b.Property("Code")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("AI设备的唯一编码");
+
+ b.Property("Consumption")
+ .HasColumnType("int")
+ .HasComment("运动消耗");
+
+ b.Property("GradeId")
+ .HasColumnType("int")
+ .HasComment("年级编号");
+
+ b.Property("GradeName")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("年级名称");
+
+ b.Property("IsDisplay")
+ .HasColumnType("bit")
+ .HasComment("是否显示");
+
+ b.Property("MotionDuration")
+ .HasColumnType("int")
+ .HasComment("运动时长/分钟");
+
+ b.Property("Remarks")
+ .HasColumnType("text")
+ .HasComment("备注");
+
+ b.Property("SchoolCode")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("学校Code");
+
+ b.Property("ScoreTime")
+ .HasColumnType("datetime")
+ .HasComment("测试时间");
+
+ b.Property("Sex")
+ .HasColumnType("int")
+ .HasComment("学校Co性别de");
+
+ b.Property("Strength")
+ .HasColumnType("double")
+ .HasComment("运动强度");
+
+ b.Property("StudentName")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("姓名");
+
+ b.Property("StudentNo")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("学号");
+
+ b.Property("TeacherId")
+ .HasColumnType("int")
+ .HasComment("老师Id");
+
+ b.Property("Value")
+ .HasColumnType("double")
+ .HasComment("心率");
+
+ b.HasKey("Id");
+
+ b.ToTable("Ai_HeartRateData");
+ });
+
+ modelBuilder.Entity("VOL.Entity.DomainModels.Ai_LevelExamData", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int")
+ .HasComment("Id");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1);
+
+ b.Property("AssessmentResults")
+ .HasColumnType("int")
+ .HasComment("是否通过");
+
+ b.Property("ClassId")
+ .HasColumnType("int")
+ .HasComment("班级Id");
+
+ b.Property("ClassName")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("班级名称");
+
+ b.Property("ClassRoomRecordId")
+ .HasColumnType("int")
+ .HasComment("课堂记录Id");
+
+ b.Property("Code")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("AI设备的唯一编码");
+
+ b.Property("CorrectJudge")
+ .HasColumnType("nvarchar(4000)")
+ .HasComment("动作解析");
+
+ b.Property("CorrectNumber")
+ .HasColumnType("int")
+ .HasComment("正确个数");
+
+ b.Property("Duration")
+ .HasColumnType("int")
+ .HasComment("持续时间");
+
+ b.Property("EndTime")
+ .HasColumnType("datetime")
+ .HasComment("结束时间");
+
+ b.Property("ErrorNumber")
+ .HasColumnType("int")
+ .HasComment("错误个数");
+
+ b.Property("FileName")
+ .HasColumnType("nvarchar(2000)")
+ .HasComment("文件名称");
+
+ b.Property("FileUrl")
+ .HasColumnType("nvarchar(2000)")
+ .HasComment("文件路径");
+
+ b.Property("GradeId")
+ .HasColumnType("int")
+ .HasComment("年级编号");
+
+ b.Property("GradeName")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("年级名称");
+
+ b.Property("IsDisplay")
+ .HasColumnType("bit")
+ .HasComment("是否显示");
+
+ b.Property("MaxValue")
+ .HasColumnType("int")
+ .HasComment("最大");
+
+ b.Property("MinValue")
+ .HasColumnType("int")
+ .HasComment("最小");
+
+ b.Property("MotionDuration")
+ .HasColumnType("int")
+ .HasComment("运动时长/分钟");
+
+ b.Property("Rank")
+ .HasColumnType("int")
+ .HasComment("专项测评等级");
+
+ b.Property("RankStr")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("专项测评等级");
+
+ b.Property("Remark")
+ .HasColumnType("nvarchar(4000)")
+ .HasComment("设备评价语");
+
+ b.Property("SchoolCode")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("学校Code");
+
+ b.Property("Score")
+ .HasColumnType("float")
+ .HasComment("得分");
+
+ b.Property("ScoreTime")
+ .HasColumnType("datetime")
+ .HasComment("测试时间");
+
+ b.Property("Semester")
+ .HasColumnType("int)")
+ .HasComment("学期");
+
+ b.Property("Sex")
+ .HasColumnType("int")
+ .HasComment("学校Co性别de");
+
+ b.Property("SpecialId")
+ .HasColumnType("int")
+ .HasComment("专项类型Id");
+
+ b.Property("StartTime")
+ .HasColumnType("datetime")
+ .HasComment("开始时间");
+
+ b.Property("StudentName")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("姓名");
+
+ b.Property("StudentNo")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("学号");
+
+ b.Property("TeacherId")
+ .HasColumnType("int")
+ .HasComment("老师Id");
+
+ b.Property("TeacherPhone")
+ .HasColumnType("varchar(11)")
+ .HasComment("老师手机号");
+
+ b.Property("UniqueId")
+ .HasColumnType("bigint")
+ .HasComment("设备上传成绩时唯一标识, 重复时服务端不保存数据");
+
+ b.Property("Value")
+ .HasColumnType("float")
+ .HasComment("测试成绩");
+
+ b.Property("WrongResults")
+ .HasColumnType("float")
+ .HasComment("错误成绩");
+
+ b.Property("Year")
+ .HasColumnType("int)")
+ .HasComment("当前年份");
+
+ b.HasKey("Id");
+
+ b.ToTable("Ai_LevelExamData");
+ });
+
+ modelBuilder.Entity("VOL.Entity.DomainModels.Ai_Mode", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int")
+ .HasComment("Id");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1);
+
+ b.Property("ModeEnum")
+ .HasColumnType("int")
+ .HasComment("模式枚举");
+
+ b.Property("ModeName")
+ .HasColumnType("nvarchar(200)")
+ .HasComment("AI模式名称");
+
+ b.Property("Remarks")
+ .HasColumnType("text")
+ .HasComment("备注");
+
+ b.HasKey("Id");
+
+ b.ToTable("Ai_Mode");
+ });
+
+ modelBuilder.Entity("VOL.Entity.DomainModels.Ai_ModeAssocModule", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int")
+ .HasComment("Id");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1);
+
+ b.Property("ModeId")
+ .HasColumnType("int")
+ .HasComment("模式Id");
+
+ b.Property("TrainingModuleId")
+ .HasColumnType("int")
+ .HasComment("模块Id");
+
+ b.HasKey("Id");
+
+ b.ToTable("Ai_ModeAssocModule");
+ });
+
+ modelBuilder.Entity("VOL.Entity.DomainModels.Ai_ScanCodeLogin", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int")
+ .HasComment("Id");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1);
+
+ b.Property("Code")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("AI设备的唯一编码");
+
+ b.Property("CreateDate")
+ .HasColumnType("datetime")
+ .HasComment("创建时间");
+
+ b.Property("SchoolCode")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("学校编号");
+
+ b.Property("TeacherId")
+ .HasColumnType("int")
+ .HasComment("老师Id");
+
+ b.Property("TeacherPhoneNo")
+ .HasColumnType("nvarchar(20)")
+ .HasComment("老师联系方式");
+
+ b.HasKey("Id");
+
+ b.ToTable("Ai_ScanCodeLogin");
+ });
+
+ modelBuilder.Entity("VOL.Entity.DomainModels.Ai_Special", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int")
+ .HasComment("Id");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1);
+
+ b.Property("CreateDate")
+ .HasColumnType("datetime")
+ .HasComment("创建时间");
+
+ b.Property("Creator")
+ .HasColumnType("int")
+ .HasComment("创建人");
+
+ b.Property("ImageUrl")
+ .HasColumnType("nvarchar(2000)")
+ .HasComment("图片地址");
+
+ b.Property("Modifier")
+ .HasColumnType("int")
+ .HasComment("修改人");
+
+ b.Property("ModifyDate")
+ .HasColumnType("datetime")
+ .HasComment("修改时间");
+
+ b.Property("SpecialName")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("专项名称");
+
+ b.HasKey("Id");
+
+ b.ToTable("Ai_Special");
+ });
+
+ modelBuilder.Entity("VOL.Entity.DomainModels.Ai_SpecialAction", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int")
+ .HasComment("Id");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1);
+
+ b.Property("ActionName")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("动作名称");
+
+ b.Property("ActionType")
+ .IsRequired()
+ .HasColumnType("nvarchar(100)")
+ .HasComment("动作类型");
+
+ b.Property("ActionVideoPath")
+ .HasColumnType("nvarchar(2000)")
+ .HasComment("动作示范-视频路径");
+
+ b.Property("CreateDate")
+ .HasColumnType("datetime")
+ .HasComment("创建时间");
+
+ b.Property("Creator")
+ .HasColumnType("int")
+ .HasComment("创建人");
+
+ b.Property("ExerciseVideoPath")
+ .HasColumnType("nvarchar(2000)")
+ .HasComment("练习方法-视频路径");
+
+ b.Property("ExplainVideoPath")
+ .HasColumnType("nvarchar(2000)")
+ .HasComment("要领讲解-视频路径");
+
+ b.Property("Modifier")
+ .HasColumnType("int")
+ .HasComment("修改人");
+
+ b.Property("ModifyDate")
+ .HasColumnType("datetime")
+ .HasComment("修改时间");
+
+ b.Property("SpecialLevelId")
+ .HasColumnType("int")
+ .HasComment("专项水平Id");
+
+ b.Property("StandardVideoPath")
+ .HasColumnType("nvarchar(2000)")
+ .HasComment("达标标准-视频路径");
+
+ b.HasKey("Id");
+
+ b.HasIndex("SpecialLevelId");
+
+ b.ToTable("Ai_SpecialAction");
+ });
+
+ modelBuilder.Entity("VOL.Entity.DomainModels.Ai_SpecialLevel", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int")
+ .HasComment("Id");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1);
+
+ b.Property("CreateDate")
+ .HasColumnType("datetime")
+ .HasComment("创建时间");
+
+ b.Property("Creator")
+ .HasColumnType("int")
+ .HasComment("创建人");
+
+ b.Property("EndGrade")
+ .HasColumnType("int")
+ .HasComment("结束年级");
+
+ b.Property("LevelName")
+ .HasColumnType("nvarchar(100)")
+ .HasComment("水平名称");
+
+ b.Property("Modifier")
+ .HasColumnType("int")
+ .HasComment("修改人");
+
+ b.Property("ModifyDate")
+ .HasColumnType("datetime")
+ .HasComment("修改时间");
+
+ b.Property("SpecialId")
+ .HasColumnType("int")
+ .HasComment("专项Id");
+
+ b.Property("StartGrade")
+ .HasColumnType("int")
+ .HasComment("开始年级");
+
+ b.HasKey("Id");
+
+ b.HasIndex("SpecialId");
+
+ b.ToTable("Ai_SpecialLevel");
+ });
+
+ modelBuilder.Entity("VOL.Entity.DomainModels.Ai_SportsTestData", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int")
+ .HasComment("Id");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1);
+
+ b.Property("ActivitiesId")
+ .HasColumnType("int")
+ .HasComment("Ai赛场Id");
+
+ b.Property("AdditionalScore")
+ .HasColumnType("float")
+ .HasComment("附加分");
+
+ b.Property("CategoryValue")
+ .HasColumnType("int")
+ .HasComment("项目类型");
+
+ b.Property("ClassId")
+ .HasColumnType("int")
+ .HasComment("班级Id");
+
+ b.Property