zuoyexingqing

This commit is contained in:
tanglong 2026-05-12 13:49:29 +08:00
parent 0943cfd198
commit 93ae5ab8c1
4 changed files with 117 additions and 2 deletions

View File

@ -71,7 +71,7 @@ namespace YD_WeChatApplet.Api.Controllers
}
/// <summary>
/// 作业详情
/// 老师作业详情
/// </summary>
/// <param name="homeWorkId"></param>
/// <returns></returns>
@ -81,5 +81,17 @@ namespace YD_WeChatApplet.Api.Controllers
var res = await _homeWorkService.HomeWorkDetailsByTeacher(homeWorkId);
return res;
}
/// <summary>
/// 学生作业详情
/// </summary>
/// <param name="homeWorkId"></param>
/// <returns></returns>
[HttpGet("HomeWorkDetailsByStudent")]
public async Task<StudentHomeWorkDetailDto> HomeWorkDetailsByStudent(int homeWorkId)
{
var res = await _homeWorkService.HomeWorkDetailsByStudent(homeWorkId);
return res;
}
}
}

View File

@ -296,6 +296,54 @@ namespace YD_WeChatApplet.Api.Services.Impl
return res;
}
/// <summary>
/// 学生作业详情
/// </summary>
/// <param name="homeWorkId">作业Id</param>
public async Task<StudentHomeWorkDetailDto> HomeWorkDetailsByStudent(int homeWorkId)
{
// 获取当前登录学生学号
var studentNo = UserLoginContext.Current.UserNo;
if (string.IsNullOrEmpty(studentNo))
throw new Exception("未获取到当前学生信息");
// 联合作业表和学生作业关联表,筛选出指定作业且属于当前学生的记录
var query = from h in _sportsContext.HomeWork
join hs in _sportsContext.HomeWorkStudents on h.Id equals hs.HomeWorkId
where h.Id == homeWorkId && hs.StudentNo == studentNo
select new { HomeWork = h, StudentWork = hs };
var data = await query.FirstOrDefaultAsync();
if (data == null)
throw new Exception("作业不存在或当前学生无权查看该作业");
// 组装平铺Dto
var dto = new StudentHomeWorkDetailDto
{
Id = data.HomeWork.Id,
WorkName = $"{data.HomeWork.WorkName}-{data.HomeWork.WorkType.GetDescription()}",
WorkText = data.HomeWork.WorkText,
StartTime = data.HomeWork.StartTime,
EndTime = data.HomeWork.EndTime,
StudentScope = data.HomeWork.StudentScope == 1 ? "全部学生" : "部分学生",
WorkModeType = data.HomeWork.WorkModeType,
StudentNo = data.StudentWork.StudentNo,
StudentName = data.StudentWork.StudentName,
Sex = data.StudentWork.Sex,
Photo = data.StudentWork.Photo,
WorkStatus = data.StudentWork.WorkStatus,
Value = data.StudentWork.Value
};
// 根据模式类型格式化结果(与老师详情接口逻辑一致)
if (dto.WorkModeType == WorkModeType.TimerCount)
dto.Result = $"{dto.Value}个";
else
dto.Result = dto.Value.ToMinutesSeconds();
return dto;
}
/// <summary>
/// 作业项目列表
/// </summary>

View File

@ -27,12 +27,19 @@ namespace YD_WeChatApplet.Services
Task<PageDataDto<HomeWorkRecordDto>> HomeWorkRecordByTeacher(PatriarchHomeWorkHistoryDto dto);
/// <summary>
/// 作业详情
/// 老师作业详情
/// </summary>
/// <param name="homeWorkId"></param>
/// <returns></returns>
Task<HomeWorkDetailsDto> HomeWorkDetailsByTeacher(int homeWorkId);
/// <summary>
/// 学生作业详情
/// </summary>
/// <param name="homeWorkId"></param>
/// <returns></returns>
Task<StudentHomeWorkDetailDto> HomeWorkDetailsByStudent(int homeWorkId);
/// <summary>
/// 作业项目列表
/// </summary>

View File

@ -130,4 +130,52 @@ namespace YD_WeChatApplet.Commons.Dto.HomeWork
/// </summary>
public string Result { get; set; }
}
/// <summary>
/// 学生作业详情
/// </summary>
public class StudentHomeWorkDetailDto
{
/// <summary>作业Id</summary>
public int Id { get; set; }
/// <summary>作业名称(含类型)</summary>
public string WorkName { get; set; }
/// <summary>作业内容</summary>
public string WorkText { get; set; }
/// <summary>开始时间</summary>
public DateTime StartTime { get; set; }
/// <summary>结束时间</summary>
public DateTime EndTime { get; set; }
/// <summary>学生范围</summary>
public string StudentScope { get; set; }
/// <summary>模式类型</summary>
public WorkModeType WorkModeType { get; set; }
/// <summary>当前学生学号</summary>
public string StudentNo { get; set; }
/// <summary>学生姓名</summary>
public string StudentName { get; set; }
/// <summary>性别</summary>
public int Sex { get; set; }
/// <summary>学生照片</summary>
public string Photo { get; set; }
/// <summary>作业状态(1-未开始/进行中等,根据业务定义)</summary>
public int WorkStatus { get; set; }
/// <summary>原始成绩(次数/秒数)</summary>
public int Value { get; set; }
/// <summary>格式化后的结果(如“30个”或“01:30”)</summary>
public string Result { get; set; }
}
}