From 93ae5ab8c19e94b35213ccacd56a529de7c76227 Mon Sep 17 00:00:00 2001
From: tanglong <842690096@qq.com>
Date: Tue, 12 May 2026 13:49:29 +0800
Subject: [PATCH] zuoyexingqing
---
.../Controllers/HomeWorkController.cs | 14 +++++-
WeChatApplet/Services/Impl/HomeWorkService.cs | 48 +++++++++++++++++++
.../Services/Interface/IHomeWorkService.cs | 9 +++-
.../Dto/HomeWork/HomeWorkRecordDto.cs | 48 +++++++++++++++++++
4 files changed, 117 insertions(+), 2 deletions(-)
diff --git a/WeChatApplet/Controllers/HomeWorkController.cs b/WeChatApplet/Controllers/HomeWorkController.cs
index 2da9a63..eae481a 100644
--- a/WeChatApplet/Controllers/HomeWorkController.cs
+++ b/WeChatApplet/Controllers/HomeWorkController.cs
@@ -71,7 +71,7 @@ namespace YD_WeChatApplet.Api.Controllers
}
///
- /// 作业详情
+ /// 老师作业详情
///
///
///
@@ -81,5 +81,17 @@ namespace YD_WeChatApplet.Api.Controllers
var res = await _homeWorkService.HomeWorkDetailsByTeacher(homeWorkId);
return res;
}
+
+ ///
+ /// 学生作业详情
+ ///
+ ///
+ ///
+ [HttpGet("HomeWorkDetailsByStudent")]
+ public async Task HomeWorkDetailsByStudent(int homeWorkId)
+ {
+ var res = await _homeWorkService.HomeWorkDetailsByStudent(homeWorkId);
+ return res;
+ }
}
}
diff --git a/WeChatApplet/Services/Impl/HomeWorkService.cs b/WeChatApplet/Services/Impl/HomeWorkService.cs
index c4cba6b..91007fa 100644
--- a/WeChatApplet/Services/Impl/HomeWorkService.cs
+++ b/WeChatApplet/Services/Impl/HomeWorkService.cs
@@ -296,6 +296,54 @@ namespace YD_WeChatApplet.Api.Services.Impl
return res;
}
+ ///
+ /// 学生作业详情
+ ///
+ /// 作业Id
+ public async Task 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;
+ }
+
///
/// 作业项目列表
///
diff --git a/WeChatApplet/Services/Interface/IHomeWorkService.cs b/WeChatApplet/Services/Interface/IHomeWorkService.cs
index d5809d8..5066bd8 100644
--- a/WeChatApplet/Services/Interface/IHomeWorkService.cs
+++ b/WeChatApplet/Services/Interface/IHomeWorkService.cs
@@ -27,12 +27,19 @@ namespace YD_WeChatApplet.Services
Task> HomeWorkRecordByTeacher(PatriarchHomeWorkHistoryDto dto);
///
- /// 作业详情
+ /// 老师作业详情
///
///
///
Task HomeWorkDetailsByTeacher(int homeWorkId);
+ ///
+ /// 学生作业详情
+ ///
+ ///
+ ///
+ Task HomeWorkDetailsByStudent(int homeWorkId);
+
///
/// 作业项目列表
///
diff --git a/YD_WeChatApplet.Commons/Dto/HomeWork/HomeWorkRecordDto.cs b/YD_WeChatApplet.Commons/Dto/HomeWork/HomeWorkRecordDto.cs
index 5b67b14..b2e5fa3 100644
--- a/YD_WeChatApplet.Commons/Dto/HomeWork/HomeWorkRecordDto.cs
+++ b/YD_WeChatApplet.Commons/Dto/HomeWork/HomeWorkRecordDto.cs
@@ -130,4 +130,52 @@ namespace YD_WeChatApplet.Commons.Dto.HomeWork
///
public string Result { get; set; }
}
+
+ ///
+ /// 学生作业详情
+ ///
+ public class StudentHomeWorkDetailDto
+ {
+ /// 作业Id
+ public int Id { get; set; }
+
+ /// 作业名称(含类型)
+ public string WorkName { get; set; }
+
+ /// 作业内容
+ public string WorkText { get; set; }
+
+ /// 开始时间
+ public DateTime StartTime { get; set; }
+
+ /// 结束时间
+ public DateTime EndTime { get; set; }
+
+ /// 学生范围
+ public string StudentScope { get; set; }
+
+ /// 模式类型
+ public WorkModeType WorkModeType { get; set; }
+
+ /// 当前学生学号
+ public string StudentNo { get; set; }
+
+ /// 学生姓名
+ public string StudentName { get; set; }
+
+ /// 性别
+ public int Sex { get; set; }
+
+ /// 学生照片
+ public string Photo { get; set; }
+
+ /// 作业状态(1-未开始/进行中等,根据业务定义)
+ public int WorkStatus { get; set; }
+
+ /// 原始成绩(次数/秒数)
+ public int Value { get; set; }
+
+ /// 格式化后的结果(如“30个”或“01:30”)
+ public string Result { get; set; }
+ }
}