[update] 标签管理 使用状态从启用变为停用时检查Prompt模版备份是否使用该标签
This commit is contained in:
parent
76e2076be2
commit
e0cde07a5e
@ -8,6 +8,7 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import cn.iocoder.yudao.module.llm.dal.dataobject.prompttemplatesbackup.PromptTemplatesBackupDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import cn.iocoder.yudao.module.llm.controller.admin.prompttemplatesbackup.vo.*;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
/**
|
||||
* Prompt模板备份 Mapper
|
||||
@ -30,4 +31,11 @@ public interface PromptTemplatesBackupMapper extends BaseMapperX<PromptTemplates
|
||||
.orderByDesc(PromptTemplatesBackupDO::getId));
|
||||
}
|
||||
|
||||
}
|
||||
/**
|
||||
* 根据 标签id 获取 模版备份
|
||||
*
|
||||
* @param labelId 标签id
|
||||
* @return 模版备份
|
||||
*/
|
||||
List<PromptTemplatesBackupDO> getPromptTemplateBackByLabelId (@Param("labelId") Long labelId);
|
||||
}
|
||||
|
@ -6,10 +6,10 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import cn.iocoder.yudao.module.llm.controller.admin.label.vo.LabelPageReqVO;
|
||||
import cn.iocoder.yudao.module.llm.controller.admin.label.vo.LabelSaveReqVO;
|
||||
import cn.iocoder.yudao.module.llm.dal.dataobject.label.LabelDO;
|
||||
import cn.iocoder.yudao.module.llm.dal.dataobject.prompttemplates.PromptTemplatesDO;
|
||||
import cn.iocoder.yudao.module.llm.dal.mysql.label.LabelMapper;
|
||||
import cn.iocoder.yudao.module.llm.service.application.ApplicationService;
|
||||
import cn.iocoder.yudao.module.llm.service.prompttemplates.PromptTemplatesService;
|
||||
import cn.iocoder.yudao.module.llm.service.prompttemplatesbackup.PromptTemplatesBackupService;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
@ -46,6 +46,10 @@ public class LabelServiceImpl implements LabelService {
|
||||
@Resource
|
||||
private PromptTemplatesService promptTemplatesService;
|
||||
|
||||
@Lazy
|
||||
@Resource
|
||||
private PromptTemplatesBackupService promptTemplatesBackupService;
|
||||
|
||||
@Override
|
||||
public Long createLabel (LabelSaveReqVO createReqVO) {
|
||||
validateLabelNameExists(createReqVO);
|
||||
@ -100,7 +104,7 @@ public class LabelServiceImpl implements LabelService {
|
||||
// 检查标签是否在 Prompt 模版中有使用
|
||||
validateLabelUsesInPromptTemplate(id, labelName);
|
||||
// 检查标签是否在 Prompt 模版备份中有使用
|
||||
// validateLabelUsesInPromptTemplateBackup(id, labelName);
|
||||
validateLabelUsesInPromptTemplateBackup(id, labelName);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -131,6 +135,20 @@ public class LabelServiceImpl implements LabelService {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查标签是否在 Prompt模版备份 有使用
|
||||
*
|
||||
* @param id 标签id
|
||||
* @param name 标签名称
|
||||
*/
|
||||
private void validateLabelUsesInPromptTemplateBackup (Long id, String name) {
|
||||
Map<Long, String> template = promptTemplatesBackupService.getPromptTemplateBackByLabelId(id);
|
||||
if (CollectionUtils.isNotEmpty(template)) {
|
||||
String msg = String.format("标签【%s】在 Prompt模版备份 %s 有使用,请先取消Prompt模版备份", name, template.values());
|
||||
throw exception(new ErrorCode(10004_003, msg));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteLabel (Long id) {
|
||||
// 校验存在
|
||||
|
@ -58,4 +58,11 @@ public interface PromptTemplatesBackupService {
|
||||
|
||||
void unbackupPromptTemplates(PromptTemplatesBackupSaveReqVO updateReqVO);
|
||||
|
||||
/**
|
||||
* 根据 标签id 获取 模版备份
|
||||
*
|
||||
* @param labelId 标签id
|
||||
* @return 模版备份
|
||||
*/
|
||||
Map<Long, String> getPromptTemplateBackByLabelId (Long labelId);
|
||||
}
|
||||
|
@ -1,47 +1,40 @@
|
||||
package cn.iocoder.yudao.module.llm.service.prompttemplatesbackup;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import cn.iocoder.yudao.module.llm.controller.admin.prompttemplates.vo.AbilityFramework;
|
||||
import cn.iocoder.yudao.module.llm.controller.admin.prompttemplates.vo.BriefFramework;
|
||||
import cn.iocoder.yudao.module.llm.controller.admin.prompttemplates.vo.PromptTemplatesRespVO;
|
||||
import cn.iocoder.yudao.module.llm.controller.admin.prompttemplates.vo.SampleFramework;
|
||||
import cn.iocoder.yudao.module.llm.dal.dataobject.application.ApplicationDO;
|
||||
import cn.iocoder.yudao.module.llm.dal.dataobject.label.LabelDO;
|
||||
import cn.iocoder.yudao.module.llm.controller.admin.prompttemplatesbackup.vo.PromptTemplatesBackupPageReqVO;
|
||||
import cn.iocoder.yudao.module.llm.controller.admin.prompttemplatesbackup.vo.PromptTemplatesBackupRespVO;
|
||||
import cn.iocoder.yudao.module.llm.controller.admin.prompttemplatesbackup.vo.PromptTemplatesBackupSaveReqVO;
|
||||
import cn.iocoder.yudao.module.llm.dal.dataobject.prompttemplates.PromptTemplatesDO;
|
||||
import cn.iocoder.yudao.module.llm.dal.dataobject.prompttemplatesapplications.PromptTemplatesApplicationsDO;
|
||||
import cn.iocoder.yudao.module.llm.dal.dataobject.prompttemplatesapplicationsbackup.PromptTemplatesApplicationsBackupDO;
|
||||
import cn.iocoder.yudao.module.llm.dal.dataobject.prompttemplatesbackup.PromptTemplatesBackupDO;
|
||||
import cn.iocoder.yudao.module.llm.dal.dataobject.prompttemplatestags.PromptTemplatesTagsDO;
|
||||
import cn.iocoder.yudao.module.llm.dal.dataobject.prompttemplatestagsbackup.PromptTemplatesTagsBackupDO;
|
||||
import cn.iocoder.yudao.module.llm.dal.mysql.prompttemplates.PromptTemplatesMapper;
|
||||
import cn.iocoder.yudao.module.llm.dal.mysql.prompttemplatesapplications.PromptTemplatesApplicationsMapper;
|
||||
import cn.iocoder.yudao.module.llm.dal.mysql.prompttemplatesapplicationsbackup.PromptTemplatesApplicationsBackupMapper;
|
||||
import cn.iocoder.yudao.module.llm.dal.mysql.prompttemplatesbackup.PromptTemplatesBackupMapper;
|
||||
import cn.iocoder.yudao.module.llm.dal.mysql.prompttemplatestags.PromptTemplatesTagsMapper;
|
||||
import cn.iocoder.yudao.module.llm.dal.mysql.prompttemplatestagsbackup.PromptTemplatesTagsBackupMapper;
|
||||
import cn.iocoder.yudao.module.llm.service.application.ApplicationService;
|
||||
import cn.iocoder.yudao.module.llm.service.label.LabelService;
|
||||
import cn.iocoder.yudao.module.system.api.dict.DictDataApi;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.*;
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import cn.iocoder.yudao.module.llm.controller.admin.prompttemplatesbackup.vo.*;
|
||||
import cn.iocoder.yudao.module.llm.dal.dataobject.prompttemplatesbackup.PromptTemplatesBackupDO;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
|
||||
import cn.iocoder.yudao.module.llm.dal.mysql.prompttemplatesbackup.PromptTemplatesBackupMapper;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static cn.iocoder.yudao.module.llm.enums.ErrorCodeConstants.*;
|
||||
import static cn.iocoder.yudao.module.llm.enums.ErrorCodeConstants.PROMPT_TEMPLATESBACKUP_EXISTS;
|
||||
import static cn.iocoder.yudao.module.llm.enums.ErrorCodeConstants.PROMPT_TEMPLATES_BACKUP_NOT_EXISTS;
|
||||
|
||||
/**
|
||||
* Prompt模板备份 Service 实现类
|
||||
@ -50,7 +43,7 @@ import static cn.iocoder.yudao.module.llm.enums.ErrorCodeConstants.*;
|
||||
*/
|
||||
@Service
|
||||
@Validated
|
||||
public class PromptTemplatesBackupServiceImpl implements PromptTemplatesBackupService {
|
||||
public class PromptTemplatesBackupServiceImpl implements PromptTemplatesBackupService {
|
||||
|
||||
@Resource
|
||||
private PromptTemplatesMapper promptTemplatesMapper;
|
||||
@ -72,7 +65,7 @@ public class PromptTemplatesBackupServiceImpl implements PromptTemplatesBackupSe
|
||||
private ApplicationService applicationService;
|
||||
|
||||
@Override
|
||||
public Long createPromptTemplatesBackup(PromptTemplatesBackupSaveReqVO createReqVO) {
|
||||
public Long createPromptTemplatesBackup (PromptTemplatesBackupSaveReqVO createReqVO) {
|
||||
// 插入
|
||||
PromptTemplatesBackupDO promptTemplatesBackup = BeanUtils.toBean(createReqVO, PromptTemplatesBackupDO.class);
|
||||
promptTemplatesBackupMapper.insert(promptTemplatesBackup);
|
||||
@ -80,7 +73,7 @@ public class PromptTemplatesBackupServiceImpl implements PromptTemplatesBackupSe
|
||||
Long srcId = createReqVO.getSrcId();
|
||||
|
||||
LambdaQueryWrapper<PromptTemplatesTagsDO> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(PromptTemplatesTagsDO::getPromptTemplateId,srcId);
|
||||
queryWrapper.eq(PromptTemplatesTagsDO::getPromptTemplateId, srcId);
|
||||
List<PromptTemplatesTagsDO> promptTemplatesTagsDOS = promptTemplatesTagsMapper.selectList(queryWrapper);
|
||||
for (PromptTemplatesTagsDO promptTemplatesTagsDO : promptTemplatesTagsDOS) {
|
||||
PromptTemplatesTagsBackupDO tagsBackupDO = new PromptTemplatesTagsBackupDO();
|
||||
@ -90,7 +83,7 @@ public class PromptTemplatesBackupServiceImpl implements PromptTemplatesBackupSe
|
||||
}
|
||||
|
||||
LambdaQueryWrapper<PromptTemplatesApplicationsDO> query = new LambdaQueryWrapper<>();
|
||||
query.eq(PromptTemplatesApplicationsDO::getPromptTemplateId,srcId);
|
||||
query.eq(PromptTemplatesApplicationsDO::getPromptTemplateId, srcId);
|
||||
List<PromptTemplatesApplicationsDO> promptTemplatesApplicationsDOS = promptTemplatesApplicationsMapper.selectList(query);
|
||||
for (PromptTemplatesApplicationsDO promptTemplatesApplicationsDO : promptTemplatesApplicationsDOS) {
|
||||
PromptTemplatesApplicationsBackupDO applicationsBackupDO = new PromptTemplatesApplicationsBackupDO();
|
||||
@ -103,7 +96,7 @@ public class PromptTemplatesBackupServiceImpl implements PromptTemplatesBackupSe
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updatePromptTemplatesBackup(PromptTemplatesBackupSaveReqVO updateReqVO) {
|
||||
public void updatePromptTemplatesBackup (PromptTemplatesBackupSaveReqVO updateReqVO) {
|
||||
// 校验存在
|
||||
validatePromptTemplatesBackupExists(updateReqVO.getId());
|
||||
// 更新
|
||||
@ -112,30 +105,30 @@ public class PromptTemplatesBackupServiceImpl implements PromptTemplatesBackupSe
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deletePromptTemplatesBackup(Long id) {
|
||||
public void deletePromptTemplatesBackup (Long id) {
|
||||
// 校验存在
|
||||
validatePromptTemplatesBackupExists(id);
|
||||
// 删除
|
||||
promptTemplatesBackupMapper.deleteById(id);
|
||||
|
||||
LambdaQueryWrapper<PromptTemplatesTagsBackupDO> wrapper = new LambdaQueryWrapperX<>();
|
||||
wrapper.eq(PromptTemplatesTagsBackupDO::getPromptTemplateId,id);
|
||||
wrapper.eq(PromptTemplatesTagsBackupDO::getPromptTemplateId, id);
|
||||
promptTemplatesTagsBackupMapper.delete(wrapper);
|
||||
|
||||
|
||||
LambdaQueryWrapper<PromptTemplatesApplicationsBackupDO> wrapper1 = new LambdaQueryWrapperX<>();
|
||||
wrapper1.eq(PromptTemplatesApplicationsBackupDO::getPromptTemplateId,id);
|
||||
wrapper1.eq(PromptTemplatesApplicationsBackupDO::getPromptTemplateId, id);
|
||||
promptTemplatesApplicationsBackupMapper.delete(wrapper1);
|
||||
}
|
||||
|
||||
private void validatePromptTemplatesBackupExists(Long id) {
|
||||
private void validatePromptTemplatesBackupExists (Long id) {
|
||||
if (promptTemplatesBackupMapper.selectById(id) == null) {
|
||||
throw exception(PROMPT_TEMPLATES_BACKUP_NOT_EXISTS);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public PromptTemplatesBackupRespVO getPromptTemplatesBackup(Long id) {
|
||||
public PromptTemplatesBackupRespVO getPromptTemplatesBackup (Long id) {
|
||||
PromptTemplatesBackupDO templatesDO = this.promptTemplatesBackupMapper.selectById(id);
|
||||
|
||||
if (templatesDO == null) {
|
||||
@ -193,7 +186,7 @@ public class PromptTemplatesBackupServiceImpl implements PromptTemplatesBackupSe
|
||||
List<PromptTemplatesApplicationsBackupDO> applicationDOList = this.promptTemplatesApplicationsBackupMapper
|
||||
.selectList("prompt_template_id", id);
|
||||
|
||||
Map<Long, String> appMap = applicationService.getApplicatioMap();
|
||||
Map<Long, String> appMap = applicationService.getApplicatioMap();
|
||||
|
||||
if (CollectionUtils.isNotEmpty(applicationDOList)) {
|
||||
// 过滤 applicationDOList 在 appMap 中不存在的 applicationIds,只保留存在的
|
||||
@ -212,13 +205,13 @@ public class PromptTemplatesBackupServiceImpl implements PromptTemplatesBackupSe
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<PromptTemplatesBackupRespVO> getPromptTemplatesBackupPage(PromptTemplatesBackupPageReqVO pageReqVO) {
|
||||
public PageResult<PromptTemplatesBackupRespVO> getPromptTemplatesBackupPage (PromptTemplatesBackupPageReqVO pageReqVO) {
|
||||
PageResult<PromptTemplatesBackupDO> pageDoList = this.promptTemplatesBackupMapper.selectPage(pageReqVO);
|
||||
PageResult<PromptTemplatesBackupRespVO> pageRespList = BeanUtils.toBean(pageDoList, PromptTemplatesBackupRespVO.class);
|
||||
List<PromptTemplatesBackupRespVO> templatesRespList = pageRespList.getList();
|
||||
|
||||
|
||||
for(PromptTemplatesBackupRespVO respVO : templatesRespList) {
|
||||
for (PromptTemplatesBackupRespVO respVO : templatesRespList) {
|
||||
// TODO 使用量查询暂时设置为0
|
||||
respVO.setUsedCount(0);
|
||||
try {
|
||||
@ -243,7 +236,7 @@ public class PromptTemplatesBackupServiceImpl implements PromptTemplatesBackupSe
|
||||
respVO.setTagNames(labelNameList);
|
||||
}
|
||||
|
||||
} catch(Exception e) {
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
try {
|
||||
@ -251,7 +244,7 @@ public class PromptTemplatesBackupServiceImpl implements PromptTemplatesBackupSe
|
||||
List<PromptTemplatesApplicationsBackupDO> applicationDOList = this.promptTemplatesApplicationsBackupMapper
|
||||
.selectList("prompt_template_id", respVO.getId());
|
||||
|
||||
Map<Long, String> appMap = applicationService.getApplicatioMap();
|
||||
Map<Long, String> appMap = applicationService.getApplicatioMap();
|
||||
|
||||
if (CollectionUtils.isNotEmpty(applicationDOList)) {
|
||||
// 过滤 applicationDOList 在 appMap 中不存在的 applicationIds,只保留存在的
|
||||
@ -267,7 +260,7 @@ public class PromptTemplatesBackupServiceImpl implements PromptTemplatesBackupSe
|
||||
.collect(Collectors.toList());
|
||||
respVO.setApplicationNames(appNameList);
|
||||
}
|
||||
} catch(Exception e) {
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
@ -275,24 +268,24 @@ public class PromptTemplatesBackupServiceImpl implements PromptTemplatesBackupSe
|
||||
}
|
||||
|
||||
@Override
|
||||
public void isBackup(Long srcId) {
|
||||
public void isBackup (Long srcId) {
|
||||
List<PromptTemplatesBackupDO> templateBackupDOList = this.promptTemplatesBackupMapper.selectList("src_id", srcId);
|
||||
if(templateBackupDOList!=null && !templateBackupDOList.isEmpty()) {
|
||||
if (templateBackupDOList != null && !templateBackupDOList.isEmpty()) {
|
||||
throw exception(PROMPT_TEMPLATESBACKUP_EXISTS);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public PromptTemplatesBackupDO getPromptTemplatesBackupBySrcId(Long srcId) {
|
||||
public PromptTemplatesBackupDO getPromptTemplatesBackupBySrcId (Long srcId) {
|
||||
List<PromptTemplatesBackupDO> templateBackupDOList = this.promptTemplatesBackupMapper.selectList("src_id", srcId);
|
||||
if(templateBackupDOList==null || templateBackupDOList.isEmpty()) {
|
||||
if (templateBackupDOList == null || templateBackupDOList.isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
return templateBackupDOList.get(0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unbackupPromptTemplates(PromptTemplatesBackupSaveReqVO updateReqVO) {
|
||||
public void unbackupPromptTemplates (PromptTemplatesBackupSaveReqVO updateReqVO) {
|
||||
Long srcId = updateReqVO.getSrcId();
|
||||
PromptTemplatesDO promptTemplatesDO = new PromptTemplatesDO();
|
||||
promptTemplatesDO.setId(srcId);
|
||||
@ -304,4 +297,24 @@ public class PromptTemplatesBackupServiceImpl implements PromptTemplatesBackupSe
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据 标签id 获取 模版备份
|
||||
*
|
||||
* @param labelId 标签id
|
||||
* @return 模版备份
|
||||
*/
|
||||
@Override
|
||||
public Map<Long, String> getPromptTemplateBackByLabelId (Long labelId) {
|
||||
if (labelId == null) {
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
|
||||
List<PromptTemplatesBackupDO> templatesDO = this.promptTemplatesBackupMapper.getPromptTemplateBackByLabelId(labelId);
|
||||
if (CollectionUtils.isEmpty(templatesDO)) {
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
|
||||
return templatesDO.stream().collect(Collectors.toMap(PromptTemplatesBackupDO::getId, PromptTemplatesBackupDO::getName));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -9,4 +9,18 @@
|
||||
文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
|
||||
-->
|
||||
|
||||
</mapper>
|
||||
<!-- 根据 标签id 获取 模版备份 -->
|
||||
<select id="getPromptTemplateBackByLabelId"
|
||||
resultType="cn.iocoder.yudao.module.llm.dal.dataobject.prompttemplatesbackup.PromptTemplatesBackupDO">
|
||||
SELECT
|
||||
lptb.id,
|
||||
lptb.name
|
||||
FROM
|
||||
llm_prompt_templates_backup lptb
|
||||
LEFT JOIN llm_prompt_templates_tags_backup lpttb ON lptb.id = lpttb.prompt_template_id
|
||||
WHERE
|
||||
lpttb.tag_id = 28
|
||||
AND lptb.deleted = FALSE
|
||||
AND lpttb.deleted = FALSE
|
||||
</select>
|
||||
</mapper>
|
||||
|
Loading…
x
Reference in New Issue
Block a user