diff --git a/src/main/java/com/project/exam/domain/service/impl/GetDetailExamRecordDomainServiceImpl.java b/src/main/java/com/project/exam/domain/service/impl/GetDetailExamRecordDomainServiceImpl.java index 460e5f9..c3a1cb1 100644 --- a/src/main/java/com/project/exam/domain/service/impl/GetDetailExamRecordDomainServiceImpl.java +++ b/src/main/java/com/project/exam/domain/service/impl/GetDetailExamRecordDomainServiceImpl.java @@ -1,10 +1,16 @@ package com.project.exam.domain.service.impl; +import cn.hutool.core.lang.Assert; import com.project.base.domain.result.Result; import com.project.exam.domain.dto.ExamRecordDTO; import com.project.exam.domain.service.BuildExamRecordDomainService; import com.project.exam.domain.service.GetDetailExamRecordDomainService; import com.project.exam.mapper.ExamRecordMapper; +import com.project.task.domain.dto.TaskDTO; +import com.project.task.domain.entity.TaskEntity; +import com.project.task.domain.entity.TaskUserEntity; +import com.project.task.domain.service.TaskBaseService; +import com.project.task.domain.service.TaskUserBaseService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -15,9 +21,20 @@ public class GetDetailExamRecordDomainServiceImpl implements GetDetailExamRecord private BuildExamRecordDomainService buildExamRecordDomainService; @Autowired private ExamRecordMapper examRecordMapper; + @Autowired + private TaskBaseService taskBaseService; + @Autowired + private TaskUserBaseService taskUserBaseService; @Override public Result getDetail(Long id) throws Exception { + // 入参校验:杜绝空ID查询 + Assert.notNull(id, "考试记录ID不能为空"); ExamRecordDTO dto = examRecordMapper.selectById(id).toDTO(ExamRecordDTO::new); + TaskUserEntity taskUserEntity = taskUserBaseService.getById(dto.getTaskUserId()); + TaskDTO taskDTO = taskBaseService.getById(taskUserEntity.getTaskId()).toDTO(TaskDTO::new); + + dto.setTaskDTO(taskDTO); + dto.setId(taskDTO.getId()); return Result.success(buildExamRecordDomainService.buildDTO(dto)); } diff --git a/src/main/java/com/project/milvus/application/impl/MilvusApplicationServiceImpl.java b/src/main/java/com/project/milvus/application/impl/MilvusApplicationServiceImpl.java index 62fe8a9..d2ab3e1 100644 --- a/src/main/java/com/project/milvus/application/impl/MilvusApplicationServiceImpl.java +++ b/src/main/java/com/project/milvus/application/impl/MilvusApplicationServiceImpl.java @@ -57,7 +57,7 @@ public class MilvusApplicationServiceImpl implements MilvusApplicationService { locked = lock.tryLock(2, 10, TimeUnit.SECONDS); if (!locked) { //休眠等待重试 - Thread.sleep(100 + new Random().nextInt(100)); + Thread.sleep(500 + new Random().nextInt(100)); retry--; } } @@ -87,11 +87,16 @@ public class MilvusApplicationServiceImpl implements MilvusApplicationService { title.setId(questionDTO.getId()); milvusDemoService.insertRecord(title); - }catch (Exception e) { + }catch (InterruptedException e) { Thread.currentThread().interrupt(); throw new RuntimeException("获取锁被中断", e); + } catch (Exception e) { + if (e instanceof MissingParameterException){ + throw (MissingParameterException) e; + } + throw new RuntimeException(e); } finally { - if (locked && lock.isHeldByCurrentThread()) { + if (lock != null && locked && lock.isHeldByCurrentThread()) { lock.unlock(); } } diff --git a/src/main/java/com/project/milvus/domain/service/impl/CheckMilvusDomainServiceImpl.java b/src/main/java/com/project/milvus/domain/service/impl/CheckMilvusDomainServiceImpl.java index ff24ddf..fc5b090 100644 --- a/src/main/java/com/project/milvus/domain/service/impl/CheckMilvusDomainServiceImpl.java +++ b/src/main/java/com/project/milvus/domain/service/impl/CheckMilvusDomainServiceImpl.java @@ -110,7 +110,7 @@ public class CheckMilvusDomainServiceImpl implements CheckMilvusDomainService { String questionHash = buildQuestionHash(title.QuestionDetailDTO, title); QuestionEntity questionEntity = questionBaseService.getOne(new QueryWrapper().eq("unique_hash", questionHash)); if (questionEntity != null) { - throw new IllegalArgumentException("题目已存在"); // 空值防护 + throw new MissingParameterException("题目已存在"); // 空值防护 } title.setUniqueHash(questionHash); } @@ -118,14 +118,14 @@ public class CheckMilvusDomainServiceImpl implements CheckMilvusDomainService { List taskKpIdsList = title.getTaskKpIdsList(); List taskKnowledgePointEntities = taskKnowledgePointBaseService.listByIds(taskKpIdsList); if (CollectionUtils.isEmpty(taskKnowledgePointEntities)) { - throw new IllegalArgumentException("知识点不存在"); // 空值防护 + throw new MissingParameterException("知识点不存在"); // 空值防护 } List kpIdsList = taskKnowledgePointEntities.stream().map(TaskKnowledgePointEntity::getAtomId).collect(Collectors.toList()); //查询知识点并提取非空的 parseName List knowledgePointEntities = knowledgePointBaseService.listByIds(kpIdsList); if (CollectionUtils.isEmpty(knowledgePointEntities)) { - throw new IllegalArgumentException("知识点不存在"); // 空值防护 + throw new MissingParameterException("知识点不存在"); // 空值防护 } //提取非空 parseName 并去重,避免重复拼接