feat: AI 场景路由、ASR 服务及前后端全链路同步
- 新增 AI 场景路由控制器和管理接口 - 新增 ASR 语音识别服务及前后端集成 - 同步 AI Runtime 客户端到 Web/小程序/Life-Script - 完善 AI 配置测试修复和管理后台路由配置 - 新增数据库迁移脚本 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user