fix:文件下载跳过权限校验

This commit is contained in:
2026-03-20 16:05:51 +08:00
parent b7b3885f87
commit 8a19bb35fd
3 changed files with 41 additions and 5 deletions

View File

@@ -70,4 +70,7 @@ public class GetSimulationTaskFileReq extends BaseReq {
@Schema(description = "所属学科名称")
private String ownDisciplineName;
@Schema(description = "文件大小格式化")
private String formatFileSize;
}

View File

@@ -168,6 +168,14 @@ public class DataAnalysisServiceImpl implements IDataAnalysisService {
wrapper.le(FileMetadataInfo::getCreateTime, req.getEndTime());
}
// 文件大小筛选
if (StringUtils.isNotBlank(req.getFormatFileSize())) {
Long fileSizeInBytes = FileSizeUtils.parseFileSizeToBytes(req.getFormatFileSize());
if (fileSizeInBytes != null && fileSizeInBytes > 0) {
wrapper.ge(FileMetadataInfo::getFileSize, fileSizeInBytes);
}
}
// 所属项目、阶段、机台、工位、任务、算列
applyTagFilters(wrapper, req.getTagReq(),discipoTaskUUids);
@@ -191,6 +199,7 @@ public class DataAnalysisServiceImpl implements IDataAnalysisService {
// 填充文件类型标签信息
fileDictTagQueryService.fillFileTagsForRespList(finalResultList, SimulationTaskResultCurveResp::getId);
// 根据前端传的filterKey和filterType进行排序
sortByTagFieldInCurrentPage(finalResultList, req.getFilterKey(), req.getFilterType());

View File

@@ -1,6 +1,8 @@
package com.sdm.data.service.impl;
import com.sdm.common.common.SdmResponse;
import com.sdm.common.common.ThreadLocalContext;
import com.sdm.common.entity.enums.ApproveFileDataTypeEnum;
import com.sdm.common.entity.req.data.DeleteFileSimulationMappingReq;
import com.sdm.common.entity.req.data.GetFileSimulationMappingReq;
import com.sdm.common.entity.resp.data.FileMetadataInfoResp;
@@ -18,10 +20,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -102,7 +101,32 @@ public class FileSimulationMappingServiceImpl extends ServiceImpl<FileSimulation
response.setData(map);
return response;
}
List<FileMetadataInfo> fileMetadataInfos = fileMetadataInfoService.lambdaQuery().in(FileMetadataInfo::getId, list.stream().map(FileSimulationMapping::getFileId).toList()).list();
Long userId = ThreadLocalContext.getUserId();
// 当前查询人的数据,所有的状态都可见
List<Integer> allVisibleInFileList = ApproveFileDataTypeEnum.getAllVisibleInFileList();
// 其他人,审批后可见状态
List<Integer> fileDatdList = ApproveFileDataTypeEnum.getVisibleInFileList();
List<FileMetadataInfo> fileMetadataInfos = fileMetadataInfoService
.lambdaQuery()
.in(FileMetadataInfo::getId, list.stream().map(FileSimulationMapping::getFileId).toList())
// ===================== 兼容 userId 为空 =====================
// 如果 userId 不为空:区分自己/别人
.nested(!Objects.isNull(userId), wrapper -> wrapper
.and(inner -> inner
.eq(FileMetadataInfo::getCreatorId, userId)
.in(FileMetadataInfo::getApproveType, allVisibleInFileList)
)
.or(inner -> inner
.ne(FileMetadataInfo::getCreatorId, userId)
.in(FileMetadataInfo::getApproveType, fileDatdList)
)
)
// 如果 userId 为空:统一走普通可见状态
.in(Objects.isNull(userId), FileMetadataInfo::getApproveType, fileDatdList)
// =================================================================
.list();
if (fileMetadataInfos.isEmpty()) {
SdmResponse response = SdmResponse.success();
response.setData(map);