|
|
@@ -308,6 +308,31 @@ public class AssignmentServiceImpl implements AssignmentService {
|
|
|
return detailVO;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public List<EngagementHistoryVO> getEngagementHistory(Long studentId, Long assignmentId) {
|
|
|
+ Engagement engagement = studentAssignmentMapper.findEngagementByStudentIdAndAssignmentId(studentId, assignmentId);
|
|
|
+ if (engagement == null) {
|
|
|
+ throw MyException.create(HttpStatus.BAD_REQUEST, "参与作业情况不存在");
|
|
|
+ }
|
|
|
+
|
|
|
+ List<StudentAssignmentHistory> historyRecords =
|
|
|
+ studentAssignmentMapper.findHistoryByStudentIdAndAssignmentId(studentId, assignmentId);
|
|
|
+ return historyRecords.stream()
|
|
|
+ .map(item -> {
|
|
|
+ EngagementHistoryVO vo = new EngagementHistoryVO();
|
|
|
+ vo.setVersion(item.getVersion());
|
|
|
+ vo.setQuillContent(item.getQuillContent());
|
|
|
+ vo.setTextContent(item.getTextContent());
|
|
|
+ vo.setHtmlContent(item.getHtmlContent());
|
|
|
+ vo.setSubmitTime(item.getSubmitTime());
|
|
|
+ if (item.getStatus() != null) {
|
|
|
+ vo.setStatus(new AssignmentCompletionStatusVO(item.getStatus().getCode(), item.getStatus().getStatus()));
|
|
|
+ }
|
|
|
+ return vo;
|
|
|
+ })
|
|
|
+ .toList();
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 作业提交,更新文件版本和作业状态
|
|
|
*
|
|
|
@@ -315,6 +340,7 @@ public class AssignmentServiceImpl implements AssignmentService {
|
|
|
* @param assignmentId
|
|
|
*/
|
|
|
@Override
|
|
|
+ @Transactional
|
|
|
public void engagementSubmit(Long studentId, Long assignmentId) {
|
|
|
Engagement engagement = studentAssignmentMapper.findEngagementByStudentIdAndAssignmentId(studentId, assignmentId);
|
|
|
if (engagement == null)
|
|
|
@@ -326,6 +352,7 @@ public class AssignmentServiceImpl implements AssignmentService {
|
|
|
int code = studentAssignmentMapper.updateById(engagement);
|
|
|
if (code == 0)
|
|
|
throw MyException.create(HttpStatus.INTERNAL_SERVER_ERROR, "更新文件版本失败");
|
|
|
+ recordHistorySnapshot(engagement);
|
|
|
} catch (Exception e) {
|
|
|
log.error(e.getMessage());
|
|
|
throw MyException.create(HttpStatus.INTERNAL_SERVER_ERROR, "更新文件版本失败");
|
|
|
@@ -339,6 +366,7 @@ public class AssignmentServiceImpl implements AssignmentService {
|
|
|
* @param assignmentId
|
|
|
*/
|
|
|
@Override
|
|
|
+ @Transactional
|
|
|
public void engagementLateSubmit(Long studentId, Long assignmentId) {
|
|
|
Engagement engagement = studentAssignmentMapper.findEngagementByStudentIdAndAssignmentId(studentId, assignmentId);
|
|
|
if (engagement == null)
|
|
|
@@ -350,6 +378,7 @@ public class AssignmentServiceImpl implements AssignmentService {
|
|
|
int code = studentAssignmentMapper.updateById(engagement);
|
|
|
if (code == 0)
|
|
|
throw MyException.create(HttpStatus.INTERNAL_SERVER_ERROR, "更新文件版本失败");
|
|
|
+ recordHistorySnapshot(engagement);
|
|
|
} catch (Exception e) {
|
|
|
log.error(e.getMessage());
|
|
|
throw MyException.create(HttpStatus.INTERNAL_SERVER_ERROR, "更新文件版本失败");
|
|
|
@@ -368,11 +397,9 @@ public class AssignmentServiceImpl implements AssignmentService {
|
|
|
Engagement engagement = studentAssignmentMapper.findEngagementByStudentIdAndAssignmentId(studentId, assignmentId);
|
|
|
if (engagement == null)
|
|
|
throw MyException.create(HttpStatus.BAD_REQUEST, "参与作业情况不存在");
|
|
|
- int originalVersion = engagement.getVersion();
|
|
|
String quillContent = jsonObject.getString("quillContent");
|
|
|
String textContent = jsonObject.getString("textContent");
|
|
|
String htmlContent = jsonObject.getString("htmlContent");
|
|
|
- engagement.setVersion(originalVersion + 1);
|
|
|
engagement.setQuillContent(quillContent);
|
|
|
engagement.setTextContent(textContent);
|
|
|
engagement.setHtmlContent(htmlContent);
|
|
|
@@ -508,6 +535,19 @@ public class AssignmentServiceImpl implements AssignmentService {
|
|
|
return res;
|
|
|
}
|
|
|
|
|
|
+ private void recordHistorySnapshot(Engagement engagement) {
|
|
|
+ StudentAssignmentHistory history = new StudentAssignmentHistory();
|
|
|
+ history.setAssignmentId(engagement.getAssignmentId());
|
|
|
+ history.setStudentId(engagement.getStudentId());
|
|
|
+ history.setVersion(engagement.getVersion());
|
|
|
+ history.setStatus(engagement.getStatus());
|
|
|
+ history.setQuillContent(engagement.getQuillContent());
|
|
|
+ history.setTextContent(engagement.getTextContent());
|
|
|
+ history.setHtmlContent(engagement.getHtmlContent());
|
|
|
+ history.setSubmitTime(new Date());
|
|
|
+ studentAssignmentMapper.insertHistory(history);
|
|
|
+ }
|
|
|
+
|
|
|
private AssignmentStatus calculateStatus(Date startTime, Date endTime) {
|
|
|
Date now = new Date();
|
|
|
if (now.before(startTime)) {
|