Browse Source

bug修复

master
luogw 4 days ago
parent
commit
7d32276214
  1. 17
      src/main/java/com/project/exam/domain/service/impl/GetDetailExamRecordDomainServiceImpl.java
  2. 11
      src/main/java/com/project/milvus/application/impl/MilvusApplicationServiceImpl.java
  3. 6
      src/main/java/com/project/milvus/domain/service/impl/CheckMilvusDomainServiceImpl.java

17
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<ExamRecordDTO> 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));
}

11
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();
}
}

6
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<QuestionEntity>().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<Long> taskKpIdsList = title.getTaskKpIdsList();
List<TaskKnowledgePointEntity> taskKnowledgePointEntities = taskKnowledgePointBaseService.listByIds(taskKpIdsList);
if (CollectionUtils.isEmpty(taskKnowledgePointEntities)) {
throw new IllegalArgumentException("知识点不存在"); // 空值防护
throw new MissingParameterException("知识点不存在"); // 空值防护
}
List<Long> kpIdsList = taskKnowledgePointEntities.stream().map(TaskKnowledgePointEntity::getAtomId).collect(Collectors.toList());
//查询知识点并提取非空的 parseName
List<KnowledgePointEntity> knowledgePointEntities = knowledgePointBaseService.listByIds(kpIdsList);
if (CollectionUtils.isEmpty(knowledgePointEntities)) {
throw new IllegalArgumentException("知识点不存在"); // 空值防护
throw new MissingParameterException("知识点不存在"); // 空值防护
}
//提取非空 parseName 并去重,避免重复拼接

Loading…
Cancel
Save