feat:素材库上传提供upload2接口,返回封面等更多信息

This commit is contained in:
刘亮
2025-05-28 17:28:07 +08:00
parent 59a42a00a1
commit 325931fef7
7 changed files with 88 additions and 14 deletions

View File

@@ -28,6 +28,14 @@ public interface IMaterialService {
*/
String upload(UploadMaterialRequest request);
/**
* 上传素材(返回更多信息)
*
* @param request 上传请求
* @return 结果
*/
Object uploadV2(UploadMaterialRequest request);
/**
* 批量上传素材
*

View File

@@ -56,6 +56,13 @@ public class MaterialServiceImpl implements IMaterialService {
return materialStoreHandler.upload(storeType, request);
}
@Override
public Material uploadV2(UploadMaterialRequest request) {
check(request);
MaterialStoreType storeType = graphInfoCache.getMaterialStoreType(request.getGraph());
return materialStoreHandler.uploadV2(storeType, request);
}
@Override
public Object batchUpload(BatchUploadMaterialRequest request) {
check(request);

View File

@@ -32,6 +32,14 @@ public abstract class BaseMaterialStore {
*/
public abstract String upload(UploadMaterialRequest request);
/**
* 上传素材
*
* @param request 上传请求
* @return 结果
*/
public abstract Material uploadV2(UploadMaterialRequest request);
// /**
// * 批量上传素材
// *

View File

@@ -7,13 +7,7 @@ import com.shuwen.groot.api.dto.material.Filters;
import com.shuwen.groot.api.dto.material.Folder;
import com.shuwen.groot.api.dto.material.Material;
import com.shuwen.groot.api.dto.material.Storehouse;
import com.shuwen.groot.api.dto.request.material.BatchUploadMaterialRequest;
import com.shuwen.groot.api.dto.request.material.DeleteMaterialRequest;
import com.shuwen.groot.api.dto.request.material.SearchMaterialRequest;
import com.shuwen.groot.api.dto.request.material.SimilarityMaterialRequest;
import com.shuwen.groot.api.dto.request.material.StatMaterialRequest;
import com.shuwen.groot.api.dto.request.material.UpdateMaterialRequest;
import com.shuwen.groot.api.dto.request.material.UploadMaterialRequest;
import com.shuwen.groot.api.dto.request.material.*;
import com.shuwen.groot.api.enums.EmbeddingDataType;
import com.shuwen.groot.api.enums.MaterialStoreType;
import com.shuwen.groot.api.enums.MaterialTaskStatus;
@@ -69,7 +63,18 @@ public class MaterialStoreHandler {
* @param request 上传请求
* @return 结果
*/
public String upload(MaterialStoreType storeType, UploadMaterialRequest request) {
public String upload(MaterialStoreType storeType, UploadMaterialRequest request){
return uploadV2(storeType,request).getId();
}
/**
* 上传素材(返回更多信息)
*
* @param storeType 存储类型
* @param request 上传请求
* @return 结果
*/
public Material uploadV2(MaterialStoreType storeType, UploadMaterialRequest request) {
MaterialImportTask materialImportTask = new MaterialImportTask();
materialImportTask.setName(request.getName());
materialImportTask.setContent(request.getContent());
@@ -81,13 +86,13 @@ public class MaterialStoreHandler {
materialImportTask.setStoreType(storeType);
materialImportTaskMapper.insert(materialImportTask);
String mediaId = storeMap.get(storeType.name().toLowerCase()).upload(request);
Material media = storeMap.get(storeType.name().toLowerCase()).uploadV2(request);
materialImportTask.setMediaId(mediaId);
materialImportTask.setMediaId(media.getId());
materialImportTask.setStatus(MaterialTaskStatus.RUNNING);
materialImportTaskMapper.updateById(materialImportTask);
return mediaId;
return media;
}
/**

View File

@@ -61,6 +61,7 @@ import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.Pair;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@@ -147,6 +148,11 @@ public class MediaxMaterialStore extends BaseMaterialStore implements FolderSupp
@Override
public String upload(UploadMaterialRequest request) {
return uploadV2(request).getId();
}
@Override
public Material uploadV2(UploadMaterialRequest request) {
return addMedia(request);
}
@@ -422,7 +428,7 @@ public class MediaxMaterialStore extends BaseMaterialStore implements FolderSupp
}
}
private String addMedia(UploadMaterialRequest req) {
private Material addMedia(UploadMaterialRequest req) {
AddMediaRequest request = new AddMediaRequest();
request.setTitle(req.getName());
request.setContent(req.getContent());
@@ -481,7 +487,29 @@ public class MediaxMaterialStore extends BaseMaterialStore implements FolderSupp
Result<AddMediaResponse> result = mmMediaClientService.addMedia(request, userModel, projectModel);
checkExpression(result.isSuccess(), InternalErrorCode.MEDIAX_ERROR, result.getMsg());
return result.getData().getMediaId();
String mediaId = result.getData().getMediaId();
Material media;
switch (type){
case VIDEO:
media = new VideoMaterial();
break;
case IMAGE:
media = new ImageMaterial();
break;
case AUDIO:
media = new AudioMaterial();
break;
default:
throw new DataBankException(InternalErrorCode.PARAMS_ERROR);
}
BeanUtils.copyProperties(request, media);
media.setCover(request.getThumbImageUrl());
media.setId(mediaId);
return media;
}

View File

@@ -66,6 +66,11 @@ public class SelfMaterialStore extends BaseMaterialStore {
@Override
public String upload(UploadMaterialRequest request) {
return uploadV2(request).getId();
}
@Override
public Material uploadV2(UploadMaterialRequest request) {
String id = UUID.randomUUID().toString();
// 拷贝素材到素材库地址
@@ -158,7 +163,14 @@ public class SelfMaterialStore extends BaseMaterialStore {
// 写入索引
materialTextSearchHandler.add(material);
return id;
if(StringUtils.isNotBlank(material.getUrl())){
material.setUrl(gssHandler.sign(material.getUrl(),null));
}
if(StringUtils.isNotBlank(material.getCover())){
material.setCover(gssHandler.sign(material.getCover(),null));
}
return material;
}
// @Override

View File

@@ -41,6 +41,12 @@ public class MaterialController {
return materialService.upload(request);
}
@RequestMapping(value = "/upload2", produces = "application/json", method = RequestMethod.POST)
@ResponseBody
public Object uploadV2(@RequestBody UploadMaterialRequest request) {
return materialService.uploadV2(request);
}
@RequestMapping(value = "/batchUpload", produces = "application/json", method = RequestMethod.POST)
@ResponseBody
public Object batchUpload(@RequestBody BatchUploadMaterialRequest request) {