feat: 对接MeshSafe文件安全检测(上传/解包自动送检+轮询回写,不通过禁止分享传输,文件夹确认后仅分享通过内容,人工复核/重新检测,meshsafe.enabled总开关)

This commit is contained in:
2026-11-01 20:29:31 +08:00
parent c5a262b3dd
commit 4c7dd207d0
30 changed files with 2000 additions and 6 deletions

View File

@@ -9,6 +9,7 @@ import com.senmesh.sfile.dto.ExpandUserFileCreateDTO;
import com.senmesh.sfile.dto.ShareUserFileCreateDTO;
import com.senmesh.sfile.dto.UserFileDTO;
import com.senmesh.sfile.dto.UserFileQueryDTO;
import com.senmesh.sfile.service.FileSecurityService;
import com.senmesh.sfile.service.ShareUserFileService;
import com.senmesh.sfile.service.UserFileService;
import java.util.List;
@@ -28,6 +29,9 @@ public class ShareUserFileServiceImpl implements ShareUserFileService {
@Autowired
private UserFileService userFileService;
@Autowired
private FileSecurityService fileSecurityService;
@Override
@Transactional
public Long create(ShareUserFileCreateDTO createDTO) {
@@ -35,6 +39,10 @@ public class ShareUserFileServiceImpl implements ShareUserFileService {
Long userId = UserContextHolder.getExistLoginUserId();
Integer validDays = createDTO.getValidDays();
// MeshSafe安全检测校验:单文件不通过直接拦截;文件夹确认跳过时仅分享通过的内容
List<Long> excludeIds = fileSecurityService.resolveShareExclusions(
userFileId, Boolean.TRUE.equals(createDTO.getOnlyPassed()), "分享");
// 根据有效天数计算过期时间
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
@@ -52,6 +60,7 @@ public class ShareUserFileServiceImpl implements ShareUserFileService {
.fileStatus(FileStatusEnum.NORMAL.getStatus())
.accessCode(accessCode)
.endTime(endTime)
.excludeFileIds(excludeIds)
.build();
return userFileService.create(expandCreateDTO).getFolder().getId();
}