知识库文档上传同时备份至OSS服务器

This commit is contained in:
2026-01-06 17:15:59 +08:00
parent db53938d88
commit 02bdd456f4
2 changed files with 30 additions and 0 deletions

View File

@@ -6,6 +6,8 @@ import com.gxwebsoft.ai.config.KnowledgeBaseConfig;
import com.gxwebsoft.ai.factory.KnowledgeBaseClientFactory;
import com.gxwebsoft.ai.util.AiCloudDataCenterUtil;
import com.gxwebsoft.ai.util.AiCloudKnowledgeBaseUtil;
import com.gxwebsoft.common.system.controller.FileController;
import com.gxwebsoft.common.system.entity.FileRecord;
import com.gxwebsoft.common.system.entity.User;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
@@ -56,6 +58,9 @@ public class AiCloudFileServiceImpl extends ServiceImpl<AiCloudFileMapper, AiClo
@Resource
private KnowledgeBaseService knowledgeBaseService;
@Resource
private FileController fileController;
@Override
public PageResult<AiCloudFile> pageRel(AiCloudFileParam param) {
PageParam<AiCloudFile, AiCloudFileParam> page = new PageParam<>(param);
@@ -92,6 +97,8 @@ public class AiCloudFileServiceImpl extends ServiceImpl<AiCloudFileMapper, AiClo
AddFileResponse addFileResponse = AiCloudDataCenterUtil.uploadFile(client, workspaceId, categoryId, file);
String fileId = addFileResponse.getBody().getData().getFileId();
FileRecord fileRecord = fileController.upload(file, loginUser.getTenantId());
// 保存文件信息到数据库
AiCloudFile aiCloudFile = new AiCloudFile();
aiCloudFile.setDocId(docId);
@@ -100,6 +107,7 @@ public class AiCloudFileServiceImpl extends ServiceImpl<AiCloudFileMapper, AiClo
aiCloudFile.setFileType(getFileExtension(file.getOriginalFilename()));
aiCloudFile.setFileExt(getFileExtension(file.getOriginalFilename()));
aiCloudFile.setFileId(fileId);
aiCloudFile.setFileUrl(fileRecord.getDownloadUrl());
aiCloudFile.setUploadTime(LocalDateTime.now());
aiCloudFile.setWorkspaceId(workspaceId);

View File

@@ -1,6 +1,9 @@
package com.gxwebsoft.common.system.controller;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpRequest;
import com.alibaba.fastjson.JSONObject;
import com.gxwebsoft.common.core.annotation.OperationLog;
import com.gxwebsoft.common.core.config.ConfigProperties;
@@ -316,4 +319,23 @@ public class FileController extends BaseController {
return fail("修改失败");
}
public FileRecord upload(MultipartFile file, Integer tenantId) {
FileRecord fileRecord = new FileRecord();
if (file == null || file.isEmpty()) {
return fileRecord;
}
try {
String requestURL = config.getServerUrl() + "/oss/upload";
String response = HttpRequest.post(requestURL)
.header("Tenantid", tenantId != null ? tenantId.toString() : getTenantId().toString())
.form("file", file.getBytes(), file.getOriginalFilename())
.execute()
.body();
JSONObject data = JSONObject.parseObject(response).getJSONObject("data");
fileRecord = data != null ? BeanUtil.copyProperties(data, FileRecord.class) : fileRecord;
} catch (Exception e) {
e.printStackTrace();
}
return fileRecord;
}
}