Skip to content

Commit 0045f62

Browse files
authored
fix: return existing resource on duplicate upload (#320)
优化资源重复上传的判定与处理逻辑: - 精准查重:联合 hash、appId 与 tenantId 查询资源,避免跨应用或跨租户产生误判。 - 平滑处理:命中已存资源时,直接返回原资源,不再抛出“重复数据”异常。 - 完善隔离:新建资源时自动补充 tenantId,确保底层数据满足租户级别的隔离要求。
1 parent 4a82d4a commit 0045f62

1 file changed

Lines changed: 10 additions & 7 deletions

File tree

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

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
import java.time.Instant;
3636
import java.util.ArrayList;
3737
import java.util.List;
38-
3938
@Service
4039
public class ResourceServiceImpl extends ServiceImpl<ResourceMapper, Resource> implements ResourceService {
4140
/**
@@ -195,17 +194,21 @@ public Resource resourceUpload(Resource resource) {
195194
String resourceUrl = tinyEngineUrl + "/" + imageEncodedName;
196195
String thumbnailUrl = tinyEngineUrl + "/" + thumbnailEncodedName;
197196

198-
if (!StringUtils.isEmpty(resourceData)) {
199-
resource.setResourceUrl(resourceUrl);
200-
resource.setThumbnailUrl(thumbnailUrl);
201-
resource.setThumbnailData(ImageThumbnailGenerator.createThumbnail(resource.getResourceData(), 200, 200));
202-
}
197+
203198
QueryWrapper<Resource> queryWrapper = new QueryWrapper<>();
204199
queryWrapper.eq("hash", resource.getHash());
200+
queryWrapper.eq("app_id", resource.getAppId());
201+
queryWrapper.eq("tenant_id", loginUserContext.getTenantId());
205202
// 接入租户系统需添加租户id查询
206203
Resource resourceResult = this.baseMapper.selectOne(queryWrapper);
207204
if (resourceResult != null) {
208-
throw new ServiceException(ExceptionEnum.CM003.getResultCode(), ExceptionEnum.CM003.getResultMsg());
205+
return resourceResult;
206+
}
207+
if (!StringUtils.isEmpty(resourceData)) {
208+
resource.setTenantId(loginUserContext.getTenantId());
209+
resource.setResourceUrl(resourceUrl);
210+
resource.setThumbnailUrl(thumbnailUrl);
211+
resource.setThumbnailData(ImageThumbnailGenerator.createThumbnail(resource.getResourceData(), 200, 200));
209212
}
210213
int createResult = this.baseMapper.createResource(resource);
211214
if (createResult != 1) {

0 commit comments

Comments
 (0)