Skip to content

Commit e387726

Browse files
authored
fix: modify resource upload (opentiny#264)
* fix: modify resource upload
1 parent 3b0fb35 commit e387726

File tree

4 files changed

+35
-41
lines changed

4 files changed

+35
-41
lines changed

base/src/main/java/com/tinyengine/it/controller/ResourceController.java

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,9 @@
1515
import com.tinyengine.it.common.base.Result;
1616
import com.tinyengine.it.common.context.LoginUserContext;
1717
import com.tinyengine.it.common.exception.ExceptionEnum;
18+
import com.tinyengine.it.common.exception.ServiceException;
1819
import com.tinyengine.it.common.log.SystemControllerLog;
1920
import com.tinyengine.it.common.utils.ImageThumbnailGenerator;
20-
import com.tinyengine.it.common.utils.Utils;
21-
import com.tinyengine.it.model.dto.ResourceRequestDto;
2221
import com.tinyengine.it.model.entity.Resource;
2322
import com.tinyengine.it.service.material.ResourceService;
2423
import io.swagger.v3.oas.annotations.Operation;
@@ -293,30 +292,34 @@ public Result<Resource> detail(@PathVariable Integer id) {
293292
/**
294293
* 获取资源
295294
*
296-
* @param data the data
295+
* @param name the name
296+
* @param isResource the isResource
297297
* @return the result
298298
*/
299299
@Operation(summary = "获取资源", description = "获取资源",
300300
parameters = {
301-
@Parameter(name = "data", description = "base64编码数据")}, responses = {
301+
@Parameter(name = "name", description = "名称"),
302+
@Parameter(name = "isResource", description = "isResource"),
303+
}, responses = {
302304
@ApiResponse(responseCode = "200", description = "图片流数据",
303-
content = @Content(mediaType = "application/json", schema = @Schema(implementation = Resource.class))),
305+
content = @Content(mediaType = "image/*", schema = @Schema(implementation = Resource.class))),
304306
@ApiResponse(responseCode = "400", description = "请求失败")
305307
})
306308
@SystemControllerLog(description = "获取资源")
307309
@GetMapping("/resource/download")
308-
public void getResource(@RequestParam("data") String data, HttpServletResponse response) throws Exception {
309-
ResourceRequestDto param = Utils.decodeBase64ToObject(data, ResourceRequestDto.class);
310-
Resource resource = resourceService.queryResourceByData(param);
311-
312-
boolean useOriginal = param.isResource();
313-
String base64Data = useOriginal ? resource.getResourceData() : resource.getThumbnailData();
310+
public void getResource(@RequestParam String name, @RequestParam boolean isResource,
311+
HttpServletResponse response) throws Exception {
312+
Resource resource = resourceService.queryResourceByName(name);
313+
if(resource == null) {
314+
throw new ServiceException(ExceptionEnum.CM009.getResultCode(),ExceptionEnum.CM009.getResultMsg());
315+
}
316+
String base64Data = isResource ? resource.getResourceData() : resource.getThumbnailData();
314317
String cleanBase64 = ImageThumbnailGenerator.extractCleanBase64(base64Data);
315318
byte[] imageBytes = Base64.getDecoder().decode(cleanBase64);
316319

317320
String detectedType = ImageThumbnailGenerator.extractContentType(base64Data);
318321

319-
String fileName = useOriginal ? resource.getName() : "thumbnail_" + resource.getName();
322+
String fileName = isResource ? resource.getName() : "thumbnail_" + resource.getName();
320323
// URL编码文件名
321324
String encodedFileName = URLEncoder.encode(fileName, StandardCharsets.UTF_8)
322325
.replace("+", "%20");

base/src/main/java/com/tinyengine/it/model/dto/ResourceRequestDto.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,5 @@
2222
@Data
2323
public class ResourceRequestDto {
2424
private String name;
25-
private String category;
2625
private boolean isResource;
2726
}

base/src/main/java/com/tinyengine/it/service/material/ResourceService.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414

1515
import com.baomidou.mybatisplus.extension.service.IService;
1616
import com.tinyengine.it.common.base.Result;
17-
import com.tinyengine.it.model.dto.ResourceRequestDto;
1817
import com.tinyengine.it.model.entity.Resource;
1918

2019
import java.util.List;
@@ -45,12 +44,12 @@ public interface ResourceService extends IService<Resource> {
4544
Result<Resource> queryResourceById(Integer id);
4645

4746
/**
48-
* 根据data查询表t_resource信息
47+
* 根据name查询表t_resource信息
4948
*
50-
* @param data the data
49+
* @param name the name
5150
* @return the resource
5251
*/
53-
Resource queryResourceByData(ResourceRequestDto data) throws Exception;
52+
Resource queryResourceByName(String name) throws Exception;
5453

5554
/**
5655
* 根据分组id和创建人查询表t_resource信息

base/src/main/java/com/tinyengine/it/service/material/impl/ResourceServiceImpl.java

Lines changed: 17 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,18 @@
2020
import com.tinyengine.it.common.exception.ServiceException;
2121
import com.tinyengine.it.common.log.SystemServiceLog;
2222
import com.tinyengine.it.common.utils.ImageThumbnailGenerator;
23-
import com.tinyengine.it.common.utils.Utils;
2423
import com.tinyengine.it.mapper.ResourceGroupResourceMapper;
2524
import com.tinyengine.it.mapper.ResourceMapper;
26-
import com.tinyengine.it.model.dto.ResourceRequestDto;
2725
import com.tinyengine.it.model.entity.Resource;
2826
import com.tinyengine.it.model.entity.ResourceGroupResource;
2927
import com.tinyengine.it.service.material.ResourceService;
3028
import org.apache.commons.lang3.StringUtils;
3129
import org.springframework.beans.factory.annotation.Autowired;
3230
import org.springframework.stereotype.Service;
3331

32+
import java.net.URLEncoder;
33+
import java.nio.charset.StandardCharsets;
34+
import java.time.Instant;
3435
import java.util.ArrayList;
3536
import java.util.List;
3637

@@ -82,18 +83,18 @@ public Result<Resource> queryResourceById(Integer id) {
8283
}
8384

8485
/**
85-
* 根据data查询表t_resource信息
86+
* 根据name查询表t_resource信息
8687
*
87-
* @param data the data
88+
* @param name the name
8889
* @return the resource
8990
*/
9091
@Override
91-
@SystemServiceLog(description = "根据data查询表t_resource信息")
92-
public Resource queryResourceByData(ResourceRequestDto data) {
92+
@SystemServiceLog(description = "根据name查询表t_resource信息")
93+
public Resource queryResourceByName(String name) {
9394

9495
QueryWrapper<Resource> queryWrapper = new QueryWrapper<>();
95-
queryWrapper.eq("name", data.getName());
96-
queryWrapper.eq("category", data.getCategory());
96+
queryWrapper.eq("name", name);
97+
queryWrapper.eq("app_id", loginUserContext.getAppId());
9798

9899
return this.baseMapper.selectOne(queryWrapper);
99100
}
@@ -172,26 +173,18 @@ public Resource createResource(Resource resource) throws Exception {
172173
*/
173174
@Override
174175
@SystemServiceLog(description = "图片上传")
175-
public Resource resourceUpload(Resource resource) throws Exception {
176-
ResourceRequestDto resourceParam = new ResourceRequestDto();
177-
resourceParam.setName(resource.getName());
178-
resourceParam.setCategory(resource.getCategory());
179-
resourceParam.setResource(true);
180-
181-
String encodedResourceParam = Utils.encodeObjectToBase64(resourceParam);
182-
183-
ResourceRequestDto thumbnailParam = new ResourceRequestDto();
184-
thumbnailParam.setName(resource.getName());
185-
thumbnailParam.setCategory(resource.getCategory());
186-
thumbnailParam.setResource(false);
187-
String encodedThumbnailParam = Utils.encodeObjectToBase64(thumbnailParam);
188-
176+
public Resource resourceUpload(Resource resource) {
177+
String imageName = Instant.now().toEpochMilli()+resource.getName();
178+
resource.setName(imageName);
189179
String resourceData = resource.getResourceData();
190180
String tinyEngineUrl = System.getenv("TINY_ENGINE_URL");
191181

192182
if (!StringUtils.isEmpty(resourceData)) {
193-
resource.setResourceUrl(String.format("%s?data=%s", tinyEngineUrl, encodedResourceParam));
194-
resource.setThumbnailUrl(String.format("%s?data=%s", tinyEngineUrl, encodedThumbnailParam));
183+
String encodedName = URLEncoder.encode(imageName, StandardCharsets.UTF_8);
184+
String resourceUrl = tinyEngineUrl + "?name=" + encodedName + "&isResource=" + true;
185+
String thumbnailUrl = tinyEngineUrl + "?name=" + encodedName + "&isResource=" + false;
186+
resource.setResourceUrl(resourceUrl);
187+
resource.setThumbnailUrl(thumbnailUrl);
195188
resource.setThumbnailData(ImageThumbnailGenerator.createThumbnail(resource.getResourceData(), 200, 200));
196189
}
197190
QueryWrapper<Resource> queryWrapper = new QueryWrapper<>();

0 commit comments

Comments
 (0)