diff --git a/base/src/main/java/com/tinyengine/it/controller/ResourceController.java b/base/src/main/java/com/tinyengine/it/controller/ResourceController.java index 05d13f76..c3095335 100644 --- a/base/src/main/java/com/tinyengine/it/controller/ResourceController.java +++ b/base/src/main/java/com/tinyengine/it/controller/ResourceController.java @@ -15,10 +15,9 @@ import com.tinyengine.it.common.base.Result; import com.tinyengine.it.common.context.LoginUserContext; import com.tinyengine.it.common.exception.ExceptionEnum; +import com.tinyengine.it.common.exception.ServiceException; import com.tinyengine.it.common.log.SystemControllerLog; import com.tinyengine.it.common.utils.ImageThumbnailGenerator; -import com.tinyengine.it.common.utils.Utils; -import com.tinyengine.it.model.dto.ResourceRequestDto; import com.tinyengine.it.model.entity.Resource; import com.tinyengine.it.service.material.ResourceService; import io.swagger.v3.oas.annotations.Operation; @@ -293,30 +292,34 @@ public Result detail(@PathVariable Integer id) { /** * 获取资源 * - * @param data the data + * @param name the name + * @param isResource the isResource * @return the result */ @Operation(summary = "获取资源", description = "获取资源", parameters = { - @Parameter(name = "data", description = "base64编码数据")}, responses = { + @Parameter(name = "name", description = "名称"), + @Parameter(name = "isResource", description = "isResource"), + }, responses = { @ApiResponse(responseCode = "200", description = "图片流数据", - content = @Content(mediaType = "application/json", schema = @Schema(implementation = Resource.class))), + content = @Content(mediaType = "image/*", schema = @Schema(implementation = Resource.class))), @ApiResponse(responseCode = "400", description = "请求失败") }) @SystemControllerLog(description = "获取资源") @GetMapping("/resource/download") - public void getResource(@RequestParam("data") String data, HttpServletResponse response) throws Exception { - ResourceRequestDto param = Utils.decodeBase64ToObject(data, ResourceRequestDto.class); - Resource resource = resourceService.queryResourceByData(param); - - boolean useOriginal = param.isResource(); - String base64Data = useOriginal ? resource.getResourceData() : resource.getThumbnailData(); + public void getResource(@RequestParam String name, @RequestParam boolean isResource, + HttpServletResponse response) throws Exception { + Resource resource = resourceService.queryResourceByName(name); + if(resource == null) { + throw new ServiceException(ExceptionEnum.CM009.getResultCode(),ExceptionEnum.CM009.getResultMsg()); + } + String base64Data = isResource ? resource.getResourceData() : resource.getThumbnailData(); String cleanBase64 = ImageThumbnailGenerator.extractCleanBase64(base64Data); byte[] imageBytes = Base64.getDecoder().decode(cleanBase64); String detectedType = ImageThumbnailGenerator.extractContentType(base64Data); - String fileName = useOriginal ? resource.getName() : "thumbnail_" + resource.getName(); + String fileName = isResource ? resource.getName() : "thumbnail_" + resource.getName(); // URL编码文件名 String encodedFileName = URLEncoder.encode(fileName, StandardCharsets.UTF_8) .replace("+", "%20"); diff --git a/base/src/main/java/com/tinyengine/it/model/dto/ResourceRequestDto.java b/base/src/main/java/com/tinyengine/it/model/dto/ResourceRequestDto.java index 44684a13..88420334 100644 --- a/base/src/main/java/com/tinyengine/it/model/dto/ResourceRequestDto.java +++ b/base/src/main/java/com/tinyengine/it/model/dto/ResourceRequestDto.java @@ -22,6 +22,5 @@ @Data public class ResourceRequestDto { private String name; - private String category; private boolean isResource; } diff --git a/base/src/main/java/com/tinyengine/it/service/material/ResourceService.java b/base/src/main/java/com/tinyengine/it/service/material/ResourceService.java index 5857e856..8a9e5f65 100644 --- a/base/src/main/java/com/tinyengine/it/service/material/ResourceService.java +++ b/base/src/main/java/com/tinyengine/it/service/material/ResourceService.java @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.tinyengine.it.common.base.Result; -import com.tinyengine.it.model.dto.ResourceRequestDto; import com.tinyengine.it.model.entity.Resource; import java.util.List; @@ -45,12 +44,12 @@ public interface ResourceService extends IService { Result queryResourceById(Integer id); /** - * 根据data查询表t_resource信息 + * 根据name查询表t_resource信息 * - * @param data the data + * @param name the name * @return the resource */ - Resource queryResourceByData(ResourceRequestDto data) throws Exception; + Resource queryResourceByName(String name) throws Exception; /** * 根据分组id和创建人查询表t_resource信息 diff --git a/base/src/main/java/com/tinyengine/it/service/material/impl/ResourceServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/material/impl/ResourceServiceImpl.java index 258cc04d..53a398f4 100644 --- a/base/src/main/java/com/tinyengine/it/service/material/impl/ResourceServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/material/impl/ResourceServiceImpl.java @@ -20,10 +20,8 @@ import com.tinyengine.it.common.exception.ServiceException; import com.tinyengine.it.common.log.SystemServiceLog; import com.tinyengine.it.common.utils.ImageThumbnailGenerator; -import com.tinyengine.it.common.utils.Utils; import com.tinyengine.it.mapper.ResourceGroupResourceMapper; import com.tinyengine.it.mapper.ResourceMapper; -import com.tinyengine.it.model.dto.ResourceRequestDto; import com.tinyengine.it.model.entity.Resource; import com.tinyengine.it.model.entity.ResourceGroupResource; import com.tinyengine.it.service.material.ResourceService; @@ -31,6 +29,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.time.Instant; import java.util.ArrayList; import java.util.List; @@ -82,18 +83,18 @@ public Result queryResourceById(Integer id) { } /** - * 根据data查询表t_resource信息 + * 根据name查询表t_resource信息 * - * @param data the data + * @param name the name * @return the resource */ @Override - @SystemServiceLog(description = "根据data查询表t_resource信息") - public Resource queryResourceByData(ResourceRequestDto data) { + @SystemServiceLog(description = "根据name查询表t_resource信息") + public Resource queryResourceByName(String name) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("name", data.getName()); - queryWrapper.eq("category", data.getCategory()); + queryWrapper.eq("name", name); + queryWrapper.eq("app_id", loginUserContext.getAppId()); return this.baseMapper.selectOne(queryWrapper); } @@ -172,26 +173,18 @@ public Resource createResource(Resource resource) throws Exception { */ @Override @SystemServiceLog(description = "图片上传") - public Resource resourceUpload(Resource resource) throws Exception { - ResourceRequestDto resourceParam = new ResourceRequestDto(); - resourceParam.setName(resource.getName()); - resourceParam.setCategory(resource.getCategory()); - resourceParam.setResource(true); - - String encodedResourceParam = Utils.encodeObjectToBase64(resourceParam); - - ResourceRequestDto thumbnailParam = new ResourceRequestDto(); - thumbnailParam.setName(resource.getName()); - thumbnailParam.setCategory(resource.getCategory()); - thumbnailParam.setResource(false); - String encodedThumbnailParam = Utils.encodeObjectToBase64(thumbnailParam); - + public Resource resourceUpload(Resource resource) { + String imageName = Instant.now().toEpochMilli()+resource.getName(); + resource.setName(imageName); String resourceData = resource.getResourceData(); String tinyEngineUrl = System.getenv("TINY_ENGINE_URL"); if (!StringUtils.isEmpty(resourceData)) { - resource.setResourceUrl(String.format("%s?data=%s", tinyEngineUrl, encodedResourceParam)); - resource.setThumbnailUrl(String.format("%s?data=%s", tinyEngineUrl, encodedThumbnailParam)); + String encodedName = URLEncoder.encode(imageName, StandardCharsets.UTF_8); + String resourceUrl = tinyEngineUrl + "?name=" + encodedName + "&isResource=" + true; + String thumbnailUrl = tinyEngineUrl + "?name=" + encodedName + "&isResource=" + false; + resource.setResourceUrl(resourceUrl); + resource.setThumbnailUrl(thumbnailUrl); resource.setThumbnailData(ImageThumbnailGenerator.createThumbnail(resource.getResourceData(), 200, 200)); } QueryWrapper queryWrapper = new QueryWrapper<>();