feature: deer-flow支持从datamate获取外部接入模型 (#83)

* feature: deer-flow支持从datamate获取外部接入模型
This commit is contained in:
hhhhsc701
2025-11-13 20:13:16 +08:00
committed by GitHub
parent 604fd019d5
commit 5cef9cb273
19 changed files with 177 additions and 383 deletions

View File

@@ -58,9 +58,10 @@ public class ModelConfigApplicationService {
.baseUrl(modelConfig.getBaseUrl())
.apiKey(modelConfig.getApiKey())
.isEnabled(true)
.isDefault(modelConfig.getIsDefault())
.build();
ModelClient.checkHealth(newConfig);
modelConfigRepository.save(newConfig);
modelConfigRepository.saveAndSetDefault(newConfig);
return newConfig;
}
@@ -74,7 +75,7 @@ public class ModelConfigApplicationService {
modelConfig.setApiKey(updateModelRequest.getApiKey());
modelConfig.setIsEnabled(true);
ModelClient.checkHealth(modelConfig);
modelConfigRepository.updateById(modelConfig);
modelConfigRepository.updateAndSetDefault(modelConfig, updateModelRequest.getIsDefault());
return modelConfig;
}

View File

@@ -42,4 +42,9 @@ public class ModelConfig extends BaseEntity<String> {
* 是否启用:1-启用,0-禁用
*/
private Boolean isEnabled;
/**
* 是否默认:1-默认,0-非默认
*/
private Boolean isDefault;
}

View File

@@ -3,6 +3,7 @@ package com.datamate.common.setting.domain.repository;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.repository.IRepository;
import com.datamate.common.setting.domain.entity.ModelConfig;
import com.datamate.common.setting.domain.entity.ModelType;
import com.datamate.common.setting.interfaces.rest.dto.QueryModelRequest;
/**
@@ -19,4 +20,10 @@ public interface ModelConfigRepository extends IRepository<ModelConfig> {
* @return 模型配置列表
*/
IPage<ModelConfig> page(QueryModelRequest queryModelRequest);
void saveAndSetDefault(ModelConfig modelConfig);
void removeDefault(ModelType type);
void updateAndSetDefault(ModelConfig modelConfig, Boolean isDefault);
}

View File

@@ -1,15 +1,18 @@
package com.datamate.common.setting.infrastructure.persistence.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.repository.CrudRepository;
import com.datamate.common.setting.domain.entity.ModelConfig;
import com.datamate.common.setting.domain.entity.ModelType;
import com.datamate.common.setting.domain.repository.ModelConfigRepository;
import com.datamate.common.setting.infrastructure.persistence.mapper.ModelConfigMapper;
import com.datamate.common.setting.interfaces.rest.dto.QueryModelRequest;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import java.util.Objects;
@@ -32,6 +35,36 @@ public class ModelConfigRepositoryImpl extends CrudRepository<ModelConfigMapper,
return this.page(page, new LambdaQueryWrapper<ModelConfig>()
.eq(StringUtils.hasText(queryModelRequest.getProvider()), ModelConfig::getProvider, queryModelRequest.getProvider())
.eq(Objects.nonNull(queryModelRequest.getType()), ModelConfig::getType, queryModelRequest.getType())
.eq(Objects.nonNull(queryModelRequest.getIsEnabled()), ModelConfig::getIsEnabled, queryModelRequest.getIsEnabled()));
.eq(Objects.nonNull(queryModelRequest.getIsEnabled()), ModelConfig::getIsEnabled, queryModelRequest.getIsEnabled())
.eq(Objects.nonNull(queryModelRequest.getIsDefault()), ModelConfig::getIsDefault, queryModelRequest.getIsDefault()));
}
@Transactional
public void saveAndSetDefault(ModelConfig modelConfig) {
LambdaQueryWrapper<ModelConfig> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ModelConfig::getType, modelConfig.getType()).eq(ModelConfig::getIsDefault, true);
if (this.getOne(queryWrapper) == null) {
modelConfig.setIsDefault(true);
} else {
removeDefault(modelConfig.getType());
}
super.save(modelConfig);
}
public void removeDefault(ModelType type) {
LambdaUpdateWrapper<ModelConfig> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.set(ModelConfig::getIsDefault, false)
.eq(ModelConfig::getType, type)
.eq(ModelConfig::getIsDefault, true);
this.update(updateWrapper);
}
@Transactional
public void updateAndSetDefault(ModelConfig modelConfig, Boolean isDefault) {
if (!modelConfig.getIsDefault() && isDefault) {
removeDefault(modelConfig.getType());
}
modelConfig.setIsDefault(isDefault);
this.updateById(modelConfig);
}
}

View File

@@ -43,4 +43,9 @@ public class CreateModelRequest {
* 是否启用:1-启用,0-禁用
*/
private Boolean isEnabled;
/**
* 是否默认:1-默认,0-非默认
*/
private Boolean isDefault;
}

View File

@@ -24,4 +24,6 @@ public class QueryModelRequest extends PagingQuery {
private ModelType type;
private Boolean isEnabled;
private Boolean isDefault;
}