package com.iailab.module.ai.service.questiontemplate;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.iailab.framework.mybatis.core.query.LambdaQueryWrapperX;
|
import com.iailab.module.ai.controller.admin.questionparamsetting.vo.QuestionParamSettingRespVO;
|
import com.iailab.module.ai.dal.dataobject.model.AiModelDO;
|
import com.iailab.module.ai.dal.dataobject.questionparamsetting.QuestionParamSettingDO;
|
import com.iailab.module.ai.dal.mysql.questionparamsetting.QuestionParamSettingMapper;
|
import com.iailab.module.ai.service.model.AiModelService;
|
import jakarta.annotation.Resource;
|
import org.apache.commons.lang3.ObjectUtils;
|
import org.springframework.stereotype.Service;
|
import org.springframework.validation.annotation.Validated;
|
|
import com.iailab.module.ai.controller.admin.questiontemplate.vo.*;
|
import com.iailab.module.ai.dal.dataobject.questiontemplate.QuestionTemplateDO;
|
import com.iailab.framework.common.pojo.PageResult;
|
import com.iailab.framework.common.util.object.BeanUtils;
|
|
import com.iailab.module.ai.dal.mysql.questiontemplate.QuestionTemplateMapper;
|
|
import java.util.List;
|
import java.util.UUID;
|
|
import static com.iailab.framework.common.exception.util.ServiceExceptionUtil.exception;
|
import static com.iailab.module.ai.enums.ErrorCodeConstants.*;
|
|
/**
|
* 大模型问题模板 Service 实现类
|
*
|
* @author 超级管理员
|
*/
|
@Service
|
@Validated
|
public class QuestionTemplateServiceImpl implements QuestionTemplateService {
|
|
@Resource
|
private QuestionTemplateMapper questionTemplateMapper;
|
|
@Resource
|
private QuestionParamSettingMapper questionParamSettingMapper;
|
|
@Resource
|
private AiModelService aiModelService;
|
|
@Override
|
public String createQuestionTemplate(QuestionTemplateSaveReqVO createReqVO) {
|
// 插入
|
QuestionTemplateDO questionTemplate = BeanUtils.toBean(createReqVO, QuestionTemplateDO.class);
|
String id = UUID.randomUUID().toString();
|
questionTemplate.setId(id);
|
// 插入设置列表
|
createReqVO.getSettingList().forEach(setting -> {
|
setting.setTemplateId(id);
|
questionParamSettingMapper.insert(BeanUtils.toBean(setting, QuestionParamSettingDO.class));
|
});
|
questionTemplateMapper.insert(questionTemplate);
|
// 返回
|
return questionTemplate.getId();
|
}
|
|
@Override
|
public void updateQuestionTemplate(QuestionTemplateSaveReqVO updateReqVO) {
|
// 校验存在
|
validateQuestionTemplateExists(updateReqVO.getId());
|
// 更新
|
QuestionTemplateDO updateObj = BeanUtils.toBean(updateReqVO, QuestionTemplateDO.class);
|
// 删除设置列表
|
questionParamSettingMapper.deleteByTemplateId(updateReqVO.getId());
|
// 更新设置列表
|
updateReqVO.getSettingList().forEach(setting -> {
|
setting.setTemplateId(updateReqVO.getId());
|
setting.setId(null);
|
questionParamSettingMapper.insert(BeanUtils.toBean(setting, QuestionParamSettingDO.class));
|
});
|
questionTemplateMapper.updateById(updateObj);
|
}
|
|
@Override
|
public void deleteQuestionTemplate(String id) {
|
// 校验存在
|
validateQuestionTemplateExists(id);
|
// 删除
|
questionTemplateMapper.deleteById(id);
|
// 删除设置列表
|
questionParamSettingMapper.deleteByTemplateId(id);
|
}
|
|
private void validateQuestionTemplateExists(String id) {
|
if (questionTemplateMapper.selectById(id) == null) {
|
throw exception(QUESTION_TEMPLATE_NOT_EXISTS);
|
}
|
}
|
|
@Override
|
public QuestionTemplateDO getQuestionTemplate(String id) {
|
QuestionTemplateDO questionTemplateDO = questionTemplateMapper.selectById(id);
|
questionTemplateDO.setSettingList(BeanUtils.toBean(questionParamSettingMapper.selectList("template_id",id), QuestionParamSettingRespVO.class));
|
return questionTemplateDO;
|
}
|
|
@Override
|
public List<QuestionTemplateDO> getQuestionTemplates(QuestionTemplateReqVO reqVO) {
|
String modelName = reqVO.getModelName();
|
if(ObjectUtils.isNotEmpty(modelName)) {
|
AiModelDO model = aiModelService.getModelByName(modelName);
|
List<QuestionTemplateDO> questionTemplateDOS = questionTemplateMapper.selectList(
|
new LambdaQueryWrapperX<QuestionTemplateDO>()
|
.eqIfPresent(QuestionTemplateDO::getModelId, model.getId())
|
.eqIfPresent(QuestionTemplateDO::getQuestionCode, reqVO.getQuestionCode()));
|
// 模板数量暂时很少,先循环遍历查询模板设置
|
if (questionTemplateDOS != null && questionTemplateDOS.size() > 0) {
|
questionTemplateDOS.stream().forEach(questionTemplateDO -> {
|
questionTemplateDO.setSettingList(
|
BeanUtils.toBean(questionParamSettingMapper.selectList("template_id", questionTemplateDO.getId()), QuestionParamSettingRespVO.class));
|
});
|
}
|
return questionTemplateDOS;
|
}
|
return null;
|
}
|
|
@Override
|
public PageResult<QuestionTemplateDO> getQuestionTemplatePage(QuestionTemplatePageReqVO pageReqVO) {
|
return questionTemplateMapper.selectPage(pageReqVO);
|
}
|
|
@Override
|
public List<QuestionTemplateDO> getQuestionTemplateList(Long modelId) {
|
List<QuestionTemplateDO> questionTemplateDOList = questionTemplateMapper.selectList("model_id",modelId);
|
questionTemplateDOList.forEach(DO -> {
|
DO.setSettingList(BeanUtils.toBean(questionParamSettingMapper.selectList("template_id",DO.getId()), QuestionParamSettingRespVO.class));
|
});
|
return questionTemplateDOList;
|
}
|
|
}
|