|
|
@@ -40,8 +40,8 @@ import java.util.Objects;
|
|
|
public class AssignmentServiceImpl implements AssignmentService {
|
|
|
|
|
|
private final AssignmentMapper assignmentMapper;
|
|
|
+
|
|
|
private final CourseMapper courseMapper;
|
|
|
- private final EngagementMapper engagementMapper;
|
|
|
|
|
|
private final StudentAssignmentMapper studentAssignmentMapper;
|
|
|
|
|
|
@@ -51,10 +51,15 @@ public class AssignmentServiceImpl implements AssignmentService {
|
|
|
|
|
|
private final FileUtil fileUtil = new FileUtil();
|
|
|
|
|
|
- public AssignmentServiceImpl(AssignmentMapper assignmentMapper, CourseMapper courseMapper, EngagementMapper engagementMapper, StudentAssignmentMapper studentAssignmentMapper, UserMapper userMapper, OssUtil ossUtil) {
|
|
|
+ public AssignmentServiceImpl(AssignmentMapper assignmentMapper,
|
|
|
+ CourseMapper courseMapper,
|
|
|
+ StudentAssignmentMapper studentAssignmentMapper,
|
|
|
+ UserMapper userMapper,
|
|
|
+ OssUtil ossUtil,
|
|
|
+ CourseServiceImpl courseServiceImpl,
|
|
|
+ CourseStudentMapper courseStudentMapper) {
|
|
|
this.assignmentMapper = assignmentMapper;
|
|
|
this.courseMapper = courseMapper;
|
|
|
- this.engagementMapper = engagementMapper;
|
|
|
this.studentAssignmentMapper = studentAssignmentMapper;
|
|
|
this.userMapper = userMapper;
|
|
|
this.ossUtil = ossUtil;
|
|
|
@@ -184,7 +189,7 @@ public class AssignmentServiceImpl implements AssignmentService {
|
|
|
// 2通过FileUtil创建一个空的docx文件
|
|
|
InputStream inputStream = fileUtil.createEmptyDocx();
|
|
|
|
|
|
- String filePath = assignmentId+"_"+studentId+".docx";
|
|
|
+ String filePath = assignmentId + "_" + studentId + ".docx";
|
|
|
// 3通过OssUtil工具类上传空文件,注意给其命名为`assignmentId/studentId.docx`,并得到文件链接
|
|
|
String fileName = ossUtil.uploadEnduringFile(inputStream, filePath);
|
|
|
engagement.setFileUrl(fileName);
|
|
|
@@ -203,6 +208,7 @@ public class AssignmentServiceImpl implements AssignmentService {
|
|
|
|
|
|
/**
|
|
|
* 根据两个外键,搜索学生参与作业的情况(需要在mysql中设置索引)
|
|
|
+ *
|
|
|
* @param studentId
|
|
|
* @param assignmentId
|
|
|
* @return
|
|
|
@@ -217,9 +223,7 @@ public class AssignmentServiceImpl implements AssignmentService {
|
|
|
|
|
|
@Override
|
|
|
public IPage<EngagementVO> findEngagementPage(Page<Engagement> page, Long assignmentId) {
|
|
|
-
|
|
|
IPage<Engagement> engagements = studentAssignmentMapper.findEngagementByAssignmentId(page, assignmentId);
|
|
|
-
|
|
|
return PageMapperUtil.convert(engagements, this::convertToVO);
|
|
|
}
|
|
|
|
|
|
@@ -245,15 +249,16 @@ public class AssignmentServiceImpl implements AssignmentService {
|
|
|
EngagementDetailVO detailVO = ModelMapperUtil.map(engagement, EngagementDetailVO.class);
|
|
|
detailVO.setUserVO(ModelMapperUtil.map(student, UserVO.class));
|
|
|
detailVO.setAssignmentVO(convertToVO(assignment));
|
|
|
- detailVO.setFileKey(assignmentId+"_"+studentId+"_"+engagement.getVersion());
|
|
|
+ detailVO.setFileKey(assignmentId + "_" + studentId + "_" + engagement.getVersion());
|
|
|
|
|
|
- log.info("请求到详细信息:"+detailVO.toString());
|
|
|
+ log.info("请求到详细信息:" + detailVO.toString());
|
|
|
|
|
|
return detailVO;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 作业提交,更新文件版本和作业状态
|
|
|
+ *
|
|
|
* @param studentId
|
|
|
* @param assignmentId
|
|
|
*/
|
|
|
@@ -263,7 +268,7 @@ public class AssignmentServiceImpl implements AssignmentService {
|
|
|
if (engagement == null)
|
|
|
throw MyException.create(HttpStatus.BAD_REQUEST, "参与作业情况不存在");
|
|
|
int originalVersion = engagement.getVersion();
|
|
|
- engagement.setVersion(originalVersion+1);
|
|
|
+ engagement.setVersion(originalVersion + 1);
|
|
|
engagement.setStatus(AssignmentCompletionStatus.SUBMITTED);
|
|
|
try {
|
|
|
int code = studentAssignmentMapper.updateById(engagement);
|
|
|
@@ -278,6 +283,7 @@ public class AssignmentServiceImpl implements AssignmentService {
|
|
|
|
|
|
/**
|
|
|
* 作业暂存,更新文件版本,不修改作业状态
|
|
|
+ *
|
|
|
* @param studentId
|
|
|
* @param assignmentId
|
|
|
*/
|
|
|
@@ -287,7 +293,7 @@ public class AssignmentServiceImpl implements AssignmentService {
|
|
|
if (engagement == null)
|
|
|
throw MyException.create(HttpStatus.BAD_REQUEST, "参与作业情况不存在");
|
|
|
int originalVersion = engagement.getVersion();
|
|
|
- engagement.setVersion(originalVersion+1);
|
|
|
+ engagement.setVersion(originalVersion + 1);
|
|
|
try {
|
|
|
int code = studentAssignmentMapper.updateById(engagement);
|
|
|
if (code == 0)
|
|
|
@@ -348,12 +354,18 @@ public class AssignmentServiceImpl implements AssignmentService {
|
|
|
if (assignment.getAttachments() != null)
|
|
|
res.setAttachments(ConvertUtil.stringToList(assignment.getAttachments(), String::valueOf));
|
|
|
res.setStatus(calculateStatus(res.getStartTime(), res.getEndTime()));
|
|
|
+ // 组装老师姓名
|
|
|
+ res.setTeacherName(userMapper.selectNameById(assignment.getTeacherId()));
|
|
|
return res;
|
|
|
}
|
|
|
|
|
|
private EngagementVO convertToVO(Engagement engagement) {
|
|
|
EngagementVO res = ModelMapperUtil.map(engagement, EngagementVO.class);
|
|
|
- res.setFileKey(res.getAssignmentId()+"_"+res.getStudentId()+"_"+res.getVersion());
|
|
|
+ // 组装文件key
|
|
|
+ res.setFileKey(res.getAssignmentId() + "_" + res.getStudentId() + "_" + res.getVersion());
|
|
|
+ // 组装学生姓名
|
|
|
+ String studentName = userMapper.selectNameById(engagement.getStudentId());
|
|
|
+ res.setStudentName(studentName);
|
|
|
return res;
|
|
|
}
|
|
|
|