Browse Source

完善题目回调接口

master
luogw 5 days ago
parent
commit
4d3a3f8005
  1. 1
      src/main/java/com/project/ding/config/SecurityConfig.java
  2. 41
      src/main/java/com/project/milvus/application/impl/MilvusApplicationServiceImpl.java
  3. 2
      src/main/java/com/project/milvus/controller/MilvusController.java
  4. 2
      src/main/java/com/project/milvus/domain/dto/TitleVector.java
  5. 4
      src/main/java/com/project/milvus/domain/service/impl/CheckMilvusDomainServiceImpl.java

1
src/main/java/com/project/ding/config/SecurityConfig.java

@ -29,6 +29,7 @@ public class SecurityConfig {
.authorizeHttpRequests(auth -> auth
// 登录放行
.requestMatchers("/api/login/**" ,
"/api/milvus/**",
"/api/interaction/**").permitAll()
// 管理端锁定
.requestMatchers("/api/admin/**").hasRole("ADMIN")

41
src/main/java/com/project/milvus/application/impl/MilvusApplicationServiceImpl.java

@ -1,16 +1,13 @@
package com.project.milvus.application.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.RandomUtil;
import com.project.base.config.CustomIdGenerator;
import com.project.base.domain.exception.MissingParameterException;
import com.project.milvus.application.MilvusApplicationService;
import com.project.milvus.domain.dto.TitleVector;
import com.project.milvus.domain.service.CheckMilvusDomainService;
import com.project.milvus.domain.service.MilvusDemoService;
import com.project.question.domain.dto.QuestionDTO;
import com.project.question.domain.entity.QuestionEntity;
import com.project.question.domain.service.QuestionBaseService;
import com.project.question.domain.service.SaveQuestionDomainService;
import io.milvus.v2.service.vector.response.SearchResp;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.digest.DigestUtils;
@ -35,7 +32,7 @@ public class MilvusApplicationServiceImpl implements MilvusApplicationService {
@Autowired
private RedissonClient redissonClient;
@Autowired
private QuestionBaseService questionBaseService;
private SaveQuestionDomainService saveQuestionDomainService;
//相似度阈值
@ -83,14 +80,14 @@ public class MilvusApplicationServiceImpl implements MilvusApplicationService {
}
//保存题目到数据库
QuestionEntity questionEntity = buildQuestionEntity(title);
questionBaseService.save(questionEntity);
QuestionDTO questionDTO = buildQuestionDTO(title);
questionDTO = saveQuestionDomainService.save(questionDTO).getData();
//保存向量数据到 Milvus
title.setId(questionEntity.getId());
title.setId(questionDTO.getId());
milvusDemoService.insertRecord(title);
}catch (InterruptedException e) {
}catch (Exception e) {
Thread.currentThread().interrupt();
throw new RuntimeException("获取锁被中断", e);
} finally {
@ -101,22 +98,18 @@ public class MilvusApplicationServiceImpl implements MilvusApplicationService {
}
/**
* 构建题目实体
* 构建题目DTO
*/
private QuestionEntity buildQuestionEntity(TitleVector title) {
QuestionEntity questionEntity = new QuestionEntity();
questionEntity.setSourceType(0); // 0-单 KP 出题
questionEntity.setUseStatus(false); // 未使用
questionEntity.setKpIdList(title.getPointIdsList());
questionEntity.setUniqueHash(title.getUniqueHash());
questionEntity.setQuestionType(title.QuestionDetailDTO.getType());
// 构建题目详情
QuestionEntity.QuestionDetail detail = new QuestionEntity.QuestionDetail();
BeanUtils.copyProperties(title.QuestionDetailDTO, detail);
questionEntity.setQuestionDetail(detail);
return questionEntity;
private QuestionDTO buildQuestionDTO(TitleVector title) {
QuestionDTO questionDTO = new QuestionDTO();
questionDTO.setUseStatus(false);
questionDTO.setKpIdList(title.getPointIdsList());
questionDTO.setUniqueHash(title.getUniqueHash());
questionDTO.setClusterId(title.getClusterId());
questionDTO.setQuestionType(title.QuestionDetailDTO.getType());
questionDTO.setQuestionDetailDTO(title.QuestionDetailDTO);
return questionDTO;
}
/**

2
src/main/java/com/project/milvus/controller/MilvusController.java

@ -9,7 +9,7 @@ import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/milvus")
@RequestMapping("/api/milvus")
public class MilvusController {
@Autowired
private MilvusApplicationService milvusApplicationService;

2
src/main/java/com/project/milvus/domain/dto/TitleVector.java

@ -20,6 +20,8 @@ public class TitleVector {
public List<Float> titleVector;
//题目唯一标识
private String uniqueHash;
//知识点簇
private Long clusterId;
//题目内容
public QuestionDTO.QuestionDetailDTO QuestionDetailDTO;

4
src/main/java/com/project/milvus/domain/service/impl/CheckMilvusDomainServiceImpl.java

@ -45,6 +45,10 @@ public class CheckMilvusDomainServiceImpl implements CheckMilvusDomainService {
throw new MissingParameterException("请求参数缺失或格式错误");
}
if (title.getClusterId() == null){
throw new MissingParameterException("所属知识点簇ID不能为空");
}
if(titleVectorList.size() != 1024){
throw new MissingParameterException("向量格式错误");
}

Loading…
Cancel
Save