fix: 上传素材接口问题

This commit is contained in:
yys 2026-04-02 17:14:24 +08:00
parent 96646cf5ed
commit 67c252d174
3 changed files with 8 additions and 33 deletions

View File

@ -3,28 +3,19 @@ package com.ruoyi.api;
import com.ruoyi.ai.service.IByteAssetService; import com.ruoyi.ai.service.IByteAssetService;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.request.asset.DeleteAssetRequest; import com.ruoyi.common.core.request.asset.*;
import com.ruoyi.common.core.request.asset.GetAssetRequest;
import com.ruoyi.common.core.request.asset.ListAssetsRequest;
import com.ruoyi.common.core.request.asset.UpdateAssetRequest;
import com.ruoyi.common.core.response.asset.CreateAssetResponse;
import com.ruoyi.common.core.response.asset.GetAssetResponse; import com.ruoyi.common.core.response.asset.GetAssetResponse;
import com.ruoyi.common.core.response.asset.ListAssetsResponse; import com.ruoyi.common.core.response.asset.ListAssetsResponse;
import com.ruoyi.common.core.response.asset.UpdateAssetResponse; import com.ruoyi.common.core.response.asset.UpdateAssetResponse;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
/** /**
* 火山 - 素材管理api.docx Assets APICreateAsset 先上传存储桶再调三方接口 * 火山 - 素材管理api.docx Assets APICreateAsset 先上传存储桶再调三方接口
@ -38,15 +29,11 @@ public class ByteAssetApiController extends BaseController {
private final IByteAssetService byteAssetService; private final IByteAssetService byteAssetService;
@PostMapping(value = "/createAsset", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) @PostMapping("/createAsset")
@ApiOperation("CreateAsset先将文件上传至对象存储再调用 CreateAsset") @ApiOperation("CreateAsset创建素材")
public AjaxResult<CreateAssetResponse> createAsset( public AjaxResult<ListAssetsResponse> createAsset(@RequestBody CreateAssetRequest request) {
@ApiParam(value = "素材url", required = true) @RequestParam("url") String url,
@ApiParam(value = "所属素材组 idGroupId", required = true) @RequestParam("groupId") String groupId,
@ApiParam(value = "素材类型Image / Video / Audio", required = true) @RequestParam("assetType") String assetType,
@ApiParam(value = "素材名称,可选") @RequestParam(value = "name", required = false) String name) {
try { try {
return AjaxResult.success(byteAssetService.createAsset(url, groupId, assetType, name)); return AjaxResult.success(byteAssetService.createAsset(request));
} catch (Exception e) { } catch (Exception e) {
log.error("创建素材时发生异常", e); log.error("创建素材时发生异常", e);
return AjaxResult.error(e.getMessage()); return AjaxResult.error(e.getMessage());

View File

@ -1,14 +1,10 @@
package com.ruoyi.ai.service; package com.ruoyi.ai.service;
import com.ruoyi.common.core.request.asset.DeleteAssetRequest; import com.ruoyi.common.core.request.asset.*;
import com.ruoyi.common.core.request.asset.GetAssetRequest;
import com.ruoyi.common.core.request.asset.ListAssetsRequest;
import com.ruoyi.common.core.request.asset.UpdateAssetRequest;
import com.ruoyi.common.core.response.asset.CreateAssetResponse; import com.ruoyi.common.core.response.asset.CreateAssetResponse;
import com.ruoyi.common.core.response.asset.GetAssetResponse; import com.ruoyi.common.core.response.asset.GetAssetResponse;
import com.ruoyi.common.core.response.asset.ListAssetsResponse; import com.ruoyi.common.core.response.asset.ListAssetsResponse;
import com.ruoyi.common.core.response.asset.UpdateAssetResponse; import com.ruoyi.common.core.response.asset.UpdateAssetResponse;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException; import java.io.IOException;
@ -17,7 +13,7 @@ public interface IByteAssetService {
/** /**
* 先将文件上传至对象存储得到公网 URL再调用 CreateAsset * 先将文件上传至对象存储得到公网 URL再调用 CreateAsset
*/ */
CreateAssetResponse createAsset(String url, String groupId, String assetType, String name) throws Exception; CreateAssetResponse createAsset(CreateAssetRequest request) throws Exception;
ListAssetsResponse listAssets(ListAssetsRequest request) throws IOException; ListAssetsResponse listAssets(ListAssetsRequest request) throws IOException;

View File

@ -32,15 +32,7 @@ public class ByteAssetService extends BaseByteApiService implements IByteAssetSe
private static final String ACTION_DELETE_ASSET = "DeleteAsset"; private static final String ACTION_DELETE_ASSET = "DeleteAsset";
@Override @Override
public CreateAssetResponse createAsset(String url, String groupId, String assetType, String name) throws Exception { public CreateAssetResponse createAsset(CreateAssetRequest request) throws Exception {
if (StringUtils.isBlank(groupId) || StringUtils.isBlank(groupId) || StringUtils.isBlank(assetType)) {
throw new IllegalArgumentException("url、groupId、assetType 不能为空");
}
CreateAssetRequest request = new CreateAssetRequest();
request.setGroupId(groupId);
request.setUrl(url);
request.setName(name);
request.setAssetType(assetType);
request.setProjectName(getUserProject()); request.setProjectName(getUserProject());
return callApi(ACTION_CREATE_ASSET, request, CreateAssetResponse.class); return callApi(ACTION_CREATE_ASSET, request, CreateAssetResponse.class);
} }