学生作业详情
This commit is contained in:
parent
93ae5ab8c1
commit
1f8a7ea1c6
@ -300,42 +300,43 @@ namespace YD_WeChatApplet.Api.Services.Impl
|
|||||||
/// 学生作业详情
|
/// 学生作业详情
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="homeWorkId">作业Id</param>
|
/// <param name="homeWorkId">作业Id</param>
|
||||||
|
/// <summary>
|
||||||
|
/// 学生作业详情
|
||||||
|
/// </summary>
|
||||||
public async Task<StudentHomeWorkDetailDto> HomeWorkDetailsByStudent(int homeWorkId)
|
public async Task<StudentHomeWorkDetailDto> HomeWorkDetailsByStudent(int homeWorkId)
|
||||||
{
|
{
|
||||||
// 获取当前登录学生学号
|
|
||||||
var studentNo = UserLoginContext.Current.UserNo;
|
var studentNo = UserLoginContext.Current.UserNo;
|
||||||
if (string.IsNullOrEmpty(studentNo))
|
if (string.IsNullOrEmpty(studentNo))
|
||||||
throw new Exception("未获取到当前学生信息");
|
throw new Exception("未获取到当前学生信息");
|
||||||
|
|
||||||
// 联合作业表和学生作业关联表,筛选出指定作业且属于当前学生的记录
|
// 方案:直接投影到目标 DTO,并处理所有可能为 null 的数据库字段
|
||||||
var query = from h in _sportsContext.HomeWork
|
var dto = await _sportsContext.HomeWork
|
||||||
join hs in _sportsContext.HomeWorkStudents on h.Id equals hs.HomeWorkId
|
.Where(h => h.Id == homeWorkId)
|
||||||
where h.Id == homeWorkId && hs.StudentNo == studentNo
|
.SelectMany(h => h.HomeWorkStudents, (h, hs) => new { h, hs })
|
||||||
select new { HomeWork = h, StudentWork = 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();
|
StudentNo = x.hs.StudentNo,
|
||||||
if (data == null)
|
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("作业不存在或当前学生无权查看该作业");
|
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)
|
if (dto.WorkModeType == WorkModeType.TimerCount)
|
||||||
dto.Result = $"{dto.Value}个";
|
dto.Result = $"{dto.Value}个";
|
||||||
else
|
else
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user