Files
happy-life-star/backend-single/src/main/java/com/emotion/service/impl/AiProviderServiceImpl.java
T
peanut 89fc42819d feat: AI 场景路由、ASR 服务及前后端全链路同步
- 新增 AI 场景路由控制器和管理接口
- 新增 ASR 语音识别服务及前后端集成
- 同步 AI Runtime 客户端到 Web/小程序/Life-Script
- 完善 AI 配置测试修复和管理后台路由配置
- 新增数据库迁移脚本

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 13:25:21 +08:00

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;
}
}