feat(ai): 新增根据类型和公司ID查询工作流功能- 在AiCompanyService接口中添加getWorkflowByTypeAndCompanyId方法
- 实现类AiCompanyServiceImpl中增加对应查询逻辑
- 在AiServiceImpl中调用新方法获取公司特定应用ID
- 更新百炼API调用逻辑以支持动态应用ID
- 为新工作流类型5添加初始化配置
3 files modified
30 ■■■■■ changed files
src/main/java/cc/mrbird/febs/ai/service/AiCompanyService.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/service/impl/AiCompanyServiceImpl.java 11 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/service/impl/AiServiceImpl.java 17 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/service/AiCompanyService.java
@@ -23,6 +23,8 @@
    AiCompanyWorkflow getWorkflowById(String id);
    AiCompanyWorkflow getWorkflowByTypeAndCompanyId(int type, String companyId);
    IPage<AiCompanyWorkflow> workflowListInPage(AiCompanyWorkflow dto, QueryRequest request);
    FebsResponse addWorkflow(AiCompanyWorkflow dto);
src/main/java/cc/mrbird/febs/ai/service/impl/AiCompanyServiceImpl.java
@@ -57,6 +57,7 @@
        this.addWorkflow(entity.getId(),2,null,createTime);
        this.addWorkflow(entity.getId(),3,null,createTime);
        this.addWorkflow(entity.getId(),4,null,createTime);
        this.addWorkflow(entity.getId(),5,null,createTime);
        this.addWorkflow(entity.getId(),6,null,createTime);
        return new FebsResponse().success().message("操作成功");
@@ -92,6 +93,16 @@
    }
    @Override
    public AiCompanyWorkflow getWorkflowByTypeAndCompanyId(int type, String companyId) {
        LambdaQueryWrapper<AiCompanyWorkflow> query = Wrappers.lambdaQuery(AiCompanyWorkflow.class);
        query.eq(AiCompanyWorkflow::getCompanyId, companyId);
        query.eq(AiCompanyWorkflow::getType, type);
        query.last("limit 1");
        return aiCompanyWorkflowMapper.selectOne(query);
    }
    @Override
    public IPage<AiCompanyWorkflow> workflowListInPage(AiCompanyWorkflow dto, QueryRequest request) {
        Page<AiCompanyWorkflow> page = new Page<>(request.getPageNum(), request.getPageSize());
        LambdaQueryWrapper<AiCompanyWorkflow> query = Wrappers.lambdaQuery(AiCompanyWorkflow.class);
src/main/java/cc/mrbird/febs/ai/service/impl/AiServiceImpl.java
@@ -1,10 +1,14 @@
package cc.mrbird.febs.ai.service.impl;
import cc.mrbird.febs.ai.entity.AiCompanyWorkflow;
import cc.mrbird.febs.ai.mapper.AiCompanyWorkflowMapper;
import cc.mrbird.febs.ai.req.AiProductQuestionAiDto;
import cc.mrbird.febs.ai.service.AiCompanyService;
import cc.mrbird.febs.ai.service.AiService;
import cc.mrbird.febs.common.exception.FebsException;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.dashscope.app.Application;
import com.alibaba.dashscope.app.ApplicationParam;
import com.alibaba.dashscope.app.ApplicationResult;
@@ -23,6 +27,8 @@
@RequiredArgsConstructor
public class AiServiceImpl implements AiService {
    private final AiCompanyService aiCompanyService;
    private static final String apiKey = "sk-babdcf8799144134915cee2683794b2f";
    private static final String appId = "963b854d994a4f578d8207cd477a2464";
@@ -36,6 +42,15 @@
            throw new FebsException("百炼工作流初始化异常");
        }
        String companyAppId = appId;
        String companyId = dto.getCompanyId();
        if (StrUtil.isNotEmpty(companyId)){
            AiCompanyWorkflow workflowByTypeAndCompanyId = aiCompanyService.getWorkflowByTypeAndCompanyId(5, companyId);
            companyAppId = workflowByTypeAndCompanyId.getCode();
        }
        HashMap<String, Object> bizParams = new HashMap<>();
        bizParams.put(bizParam_1,dto.getQuestionCnt());
        bizParams.put(bizParam_2,dto.getPromptAiSystem());
@@ -45,7 +60,7 @@
        ApplicationParam param = ApplicationParam.builder()
                // 若没有配置环境变量,可用百炼API Key将下行替换为:.apiKey("sk-xxx")。但不建议在生产环境中直接将API Key硬编码到代码中,以减少API Key泄露风险。
                .apiKey(apiKey)
                .appId(appId) //替换为实际的应用 ID
                .appId(companyAppId) //替换为实际的应用 ID
                .flowStreamMode(FlowStreamMode.MESSAGE_FORMAT)
                .prompt(query)
                .bizParams(JsonUtils.toJsonObject( bizParams))