学生作业详情
This commit is contained in:
parent
93ae5ab8c1
commit
1f8a7ea1c6
@ -300,42 +300,43 @@ namespace YD_WeChatApplet.Api.Services.Impl
|
||||
/// 学生作业详情
|
||||
/// </summary>
|
||||
/// <param name="homeWorkId">作业Id</param>
|
||||
/// <summary>
|
||||
/// 学生作业详情
|
||||
/// </summary>
|
||||
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 };
|
||||
// 方案:直接投影到目标 DTO,并处理所有可能为 null 的数据库字段
|
||||
var dto = await _sportsContext.HomeWork
|
||||
.Where(h => h.Id == homeWorkId)
|
||||
.SelectMany(h => h.HomeWorkStudents, (h, hs) => new { h, hs })
|
||||
.Where(x => x.hs.StudentNo == studentNo)
|
||||
.Select(x => new StudentHomeWorkDetailDto
|
||||
{
|
||||
Id = x.h.Id,
|
||||
WorkName = x.h.WorkName + "-" + x.h.WorkType.GetDescription(),
|
||||
WorkText = x.h.WorkText,
|
||||
StartTime = x.h.StartTime,
|
||||
EndTime = x.h.EndTime,
|
||||
StudentScope = x.h.StudentScope == 1 ? "全部学生" : "部分学生",
|
||||
WorkModeType = x.h.WorkModeType,
|
||||
|
||||
var data = await query.FirstOrDefaultAsync();
|
||||
if (data == null)
|
||||
StudentNo = x.hs.StudentNo,
|
||||
StudentName = x.hs.StudentName ?? "",
|
||||
Sex = x.hs.Sex,
|
||||
Photo = x.hs.Photo ?? "",
|
||||
WorkStatus = x.hs.WorkStatus,
|
||||
Value = x.hs.Value
|
||||
})
|
||||
.FirstOrDefaultAsync();
|
||||
|
||||
if (dto == 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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user