89fc42819d
- 新增 AI 场景路由控制器和管理接口 - 新增 ASR 语音识别服务及前后端集成 - 同步 AI Runtime 客户端到 Web/小程序/Life-Script - 完善 AI 配置测试修复和管理后台路由配置 - 新增数据库迁移脚本 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
73 lines
2.3 KiB
Java
73 lines
2.3 KiB
Java
package com.emotion.service.impl;
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.emotion.entity.AiProvider;
|
|
import com.emotion.mapper.AiProviderMapper;
|
|
import com.emotion.service.AiProviderService;
|
|
import org.springframework.beans.BeanUtils;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.util.StringUtils;
|
|
|
|
import java.util.List;
|
|
import java.util.stream.Collectors;
|
|
|
|
@Service
|
|
public class AiProviderServiceImpl extends ServiceImpl<AiProviderMapper, AiProvider> implements AiProviderService {
|
|
|
|
@Override
|
|
public List<AiProvider> listVisible() {
|
|
return list(new LambdaQueryWrapper<AiProvider>()
|
|
.eq(AiProvider::getIsDeleted, 0)
|
|
.orderByDesc(AiProvider::getCreateTime))
|
|
.stream()
|
|
.map(this::maskSecret)
|
|
.collect(Collectors.toList());
|
|
}
|
|
|
|
@Override
|
|
public AiProvider saveProvider(AiProvider provider) {
|
|
if (provider.getIsEnabled() == null) {
|
|
provider.setIsEnabled(1);
|
|
}
|
|
if (!StringUtils.hasText(provider.getAuthType())) {
|
|
provider.setAuthType("bearer");
|
|
}
|
|
if (provider.getTimeoutMs() == null) {
|
|
provider.setTimeoutMs(60000);
|
|
}
|
|
save(provider);
|
|
return maskSecret(provider);
|
|
}
|
|
|
|
@Override
|
|
public AiProvider updateProvider(AiProvider provider) {
|
|
if (!StringUtils.hasText(provider.getApiKey()) || "******".equals(provider.getApiKey())) {
|
|
provider.setApiKey(null);
|
|
}
|
|
updateById(provider);
|
|
return maskSecret(getById(provider.getId()));
|
|
}
|
|
|
|
@Override
|
|
public AiProvider getEnabledById(String id) {
|
|
AiProvider provider = getById(id);
|
|
if (provider == null || provider.getIsEnabled() == null || provider.getIsEnabled() != 1) {
|
|
return null;
|
|
}
|
|
return provider;
|
|
}
|
|
|
|
private AiProvider maskSecret(AiProvider provider) {
|
|
if (provider == null) {
|
|
return null;
|
|
}
|
|
AiProvider copy = new AiProvider();
|
|
BeanUtils.copyProperties(provider, copy);
|
|
if (StringUtils.hasText(copy.getApiKey())) {
|
|
copy.setApiKey("******");
|
|
}
|
|
return copy;
|
|
}
|
|
}
|