[update] 根据不同ID获取应用方法修改

This commit is contained in:
Liuyang 2025-01-20 15:05:08 +08:00
parent fb3c83bd36
commit 0654d516a2

View File

@ -21,6 +21,7 @@ import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
@ -30,6 +31,8 @@ import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.function.BiFunction;
import java.util.function.Function;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
@ -43,6 +46,7 @@ import static cn.iocoder.yudao.module.llm.enums.ErrorCodeConstants.APPLICATION_N
*/
@Service
@Validated
@Slf4j
public class ApplicationServiceImpl implements ApplicationService {
@Resource
@ -293,74 +297,86 @@ public class ApplicationServiceImpl implements ApplicationService {
.collect(Collectors.toMap(ApplicationDO::getId, ApplicationDO::getAppName));
}
/**
* 根据 标签id 获取 应用
* 通用的根据条件查询 ApplicationDO 列表并转换为 Map 的方法
*
* @param labelId 标签id
* @return 应用
* @param condition 条件使用 BiFunction 接收 LambdaQueryWrapper 和参数并设置条件
* @param keyMapper ApplicationDO 对象映射为 Map 的键
* @param valueMapper ApplicationDO 对象映射为 Map 的值
* @param param 查询参数
* @return 应用的 Map 集合
*/
private Map<Long, String> getApplicationMap (BiFunction<LambdaQueryWrapper<ApplicationDO>, Long, LambdaQueryWrapper<ApplicationDO>> condition, Function<ApplicationDO, Long> keyMapper, Function<ApplicationDO, String> valueMapper, Long param) {
if (param == null) {
return Collections.emptyMap();
}
// 查询符合条件的应用
LambdaQueryWrapper<ApplicationDO> queryWrapper = new LambdaQueryWrapper<>();
// 设置条件
queryWrapper = condition.apply(queryWrapper, param);
log.info("condition: {}", queryWrapper.getSqlSegment());
List<ApplicationDO> applications = applicationMapper.selectList(queryWrapper);
if (CollectionUtils.isEmpty(applications)) {
return Collections.emptyMap();
}
log.info("param: {}", param);
return applications.stream().collect(Collectors.toMap(keyMapper, valueMapper));
}
/**
* 根据标签 id 获取应用
*
* @param labelId 标签 id
* @return 应用的 Map 集合
*/
@Override
public Map<Long, String> getApplicationByLabelId (Long labelId) {
if (labelId == null) {
return Collections.emptyMap();
}
List<ApplicationDO> applications = this.applicationMapper.selectList(new LambdaQueryWrapper<ApplicationDO>()
.select(ApplicationDO::getId, ApplicationDO::getAppName)
.eq(ApplicationDO::getAppLabel, labelId));
if (CollectionUtils.isEmpty(applications)) {
return Collections.emptyMap();
}
return applications.stream().collect(Collectors.toMap(ApplicationDO::getId, ApplicationDO::getAppName));
return getApplicationMap((wrapper, id) -> wrapper.select(ApplicationDO::getId, ApplicationDO::getAppName).eq(ApplicationDO::getAppLabel, id),
ApplicationDO::getId, ApplicationDO::getAppName, labelId);
}
/**
* 根据 Prompt模版id 获取 应用
* 根据 Prompt 模板 id 获取应用
*
* @param templateId Prompt模版 id
* @return 应用
* @param templateId Prompt 模板 id
* @return 应用的 Map 集合
*/
@Override
public Map<Long, String> validatePromptTemplateUsesInApp (Long templateId) {
if (templateId == null) {
return Collections.emptyMap();
}
List<ApplicationDO> applications = this.applicationMapper.selectList(new LambdaQueryWrapper<ApplicationDO>()
.select(ApplicationDO::getId, ApplicationDO::getAppName)
.eq(ApplicationDO::getPromptId, templateId));
if (CollectionUtils.isEmpty(applications)) {
return Collections.emptyMap();
}
return applications.stream().collect(Collectors.toMap(ApplicationDO::getId, ApplicationDO::getAppName));
return getApplicationMap((wrapper, id) -> wrapper.select(ApplicationDO::getId, ApplicationDO::getAppName).eq(ApplicationDO::getPromptId, id),
ApplicationDO::getId, ApplicationDO::getAppName, templateId);
}
/**
* 根据 知识库id 获取 应用
* 根据知识库 id 获取应用
*
* @param knowledgeId 知识库id
* @return 应用
* @param knowledgeId 知识库 id
* @return 应用的 Map 集合
*/
@Override
public Map<Long, String> getApplicationByKnowledgeId (Long knowledgeId) {
if (knowledgeId == null) {
return Collections.emptyMap();
}
List<ApplicationDO> applications = this.applicationMapper.selectList(new LambdaQueryWrapper<ApplicationDO>()
.select(ApplicationDO::getId, ApplicationDO::getAppName)
.eq(ApplicationDO::getModelServiceId, knowledgeId));
if (CollectionUtils.isEmpty(applications)) {
return Collections.emptyMap();
}
return applications.stream().collect(Collectors.toMap(ApplicationDO::getId, ApplicationDO::getAppName));
return getApplicationMap((wrapper, id) -> wrapper.select(ApplicationDO::getId, ApplicationDO::getAppName).eq(ApplicationDO::getModelServiceId, id),
ApplicationDO::getId, ApplicationDO::getAppName, knowledgeId);
}
/**
* 根据 基础模型id 获取 应用
*
* @param baseModelId 基础模型id
* @return 应用
*/
@Override
public Map<Long, String> getApplicationByBaseModelId (Long baseModelId) {
return Collections.emptyMap();
}
}