|
|
@@ -3,6 +3,7 @@ package com.njuzr.eaibackend.service.impl;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.mongodb.client.result.DeleteResult;
|
|
|
import com.njuzr.eaibackend.dto.AiSpeakingAssignmentDTO;
|
|
|
import com.njuzr.eaibackend.enums.AssignmentStatus;
|
|
|
import com.njuzr.eaibackend.enums.Role;
|
|
|
@@ -13,9 +14,13 @@ import com.njuzr.eaibackend.service.AiSpeakingAssignmentService;
|
|
|
import com.njuzr.eaibackend.utils.ConvertUtil;
|
|
|
import com.njuzr.eaibackend.vo.AiSpeakingAssignmentVO;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.catalina.webresources.war.WarURLConnection;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.cache.annotation.CacheEvict;
|
|
|
+import org.springframework.data.mongodb.core.MongoTemplate;
|
|
|
+import org.springframework.data.mongodb.core.query.Criteria;
|
|
|
+import org.springframework.data.mongodb.core.query.Query;
|
|
|
import org.springframework.http.HttpStatus;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
@@ -39,6 +44,9 @@ public class AiSpeakingAssignmentServiceImpl extends ServiceImpl<AiSpeakingAssig
|
|
|
|
|
|
@Autowired
|
|
|
StudentAssignmentMapper studentAssignmentMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ MongoTemplate mongoTemplate;
|
|
|
@Override
|
|
|
public void createSpeakingAssignment(MyUserDetails user, Long courseId, AiSpeakingAssignmentDTO aiSpeakingAssignmentDTO) {
|
|
|
Course course = courseMapper.selectById(courseId);
|
|
|
@@ -107,7 +115,7 @@ public class AiSpeakingAssignmentServiceImpl extends ServiceImpl<AiSpeakingAssig
|
|
|
@Transactional
|
|
|
public boolean updateAssignment(MyUserDetails user, Long assignmentId, AiSpeakingAssignmentDTO aiSpeakingAssignmentDTO) {
|
|
|
Assignment assignment = assignmentMapper.selectById(assignmentId);
|
|
|
- if (!Objects.equals(assignment.getTeacherId(), user.getId()))
|
|
|
+ if (!Objects.equals(assignment.getTeacherId(), user.getId()) && !Objects.equals(assignment.getTeacherPid(), user.getPid()))
|
|
|
throw MyException.create(HttpStatus.BAD_REQUEST, "无权限更新");
|
|
|
Assignment newAssignment = new Assignment();
|
|
|
BeanUtils.copyProperties(aiSpeakingAssignmentDTO, newAssignment);
|
|
|
@@ -149,7 +157,10 @@ public class AiSpeakingAssignmentServiceImpl extends ServiceImpl<AiSpeakingAssig
|
|
|
QueryWrapper<AiSpeakingAssignment> speakingAssignmentQueryWrapper = new QueryWrapper<>();
|
|
|
speakingAssignmentQueryWrapper.eq("assignment_id", assignmentId);
|
|
|
int code1 = baseMapper.delete(speakingAssignmentQueryWrapper);
|
|
|
- if (code==0 || code1 == 0) {
|
|
|
+ Query query = new Query(Criteria.where("assignmentId").is(assignmentId));
|
|
|
+ // 删除相应作业的对话记录
|
|
|
+ DeleteResult code2 = mongoTemplate.remove(query, SpeakingAIDialogue.class);
|
|
|
+ if (code==0 || code1 == 0 || !code2.wasAcknowledged()) {
|
|
|
throw MyException.create(HttpStatus.INTERNAL_SERVER_ERROR, "删除作业错误");
|
|
|
}
|
|
|
} catch (Exception e) {
|