fix: 优化附件逻辑
This commit is contained in:
parent
1239b58fee
commit
101e55a9d2
@ -424,15 +424,11 @@ public class FishDraftDataController {
|
||||
|
||||
@PostMapping("/deleteAttachment")
|
||||
@Operation(summary = "删除附件")
|
||||
public ResponseResult deleteAttachment(@RequestParam String id,
|
||||
@RequestHeader("token") String token) {
|
||||
public ResponseResult deleteAttachment(@RequestParam String id) {
|
||||
if (id == null || id.isEmpty()) {
|
||||
return ResponseResult.error("附件ID不能为空");
|
||||
}
|
||||
if (token == null || token.isEmpty()) {
|
||||
return ResponseResult.error("token不能为空");
|
||||
}
|
||||
boolean result = attachmentUploadService.deleteFile(id, token);
|
||||
boolean result = attachmentUploadService.deleteFile(id);
|
||||
if (result) {
|
||||
return ResponseResult.success("删除成功");
|
||||
} else {
|
||||
|
||||
@ -2,6 +2,7 @@ package com.yfd.platform.data.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
@ -27,6 +28,10 @@ import java.util.stream.Collectors;
|
||||
@Slf4j
|
||||
@Service
|
||||
public class AttachmentUploadService {
|
||||
|
||||
@Value("${attachment.token}")
|
||||
private String token;
|
||||
|
||||
// 定义一个固定的线程池用于文件上传(建议根据服务器性能调整核心线程数)
|
||||
private static final ExecutorService UPLOAD_EXECUTOR = new ThreadPoolExecutor(
|
||||
5, 10, 60L, TimeUnit.SECONDS, new LinkedBlockingQueue<>(100),
|
||||
@ -261,9 +266,9 @@ public class AttachmentUploadService {
|
||||
}
|
||||
}
|
||||
|
||||
private static final String DELETE_URL = "https://211.99.26.225:12125/delete";
|
||||
private static final String DELETE_URL = "https://211.99.26.225:12125/FileDelete";
|
||||
|
||||
public boolean deleteFile(String attachmentId, String token) {
|
||||
public boolean deleteFile(String attachmentId) {
|
||||
if (attachmentId == null || attachmentId.isEmpty()) {
|
||||
log.warn("附件ID为空");
|
||||
return false;
|
||||
@ -285,7 +290,7 @@ public class AttachmentUploadService {
|
||||
.sslContext(sc)
|
||||
.build();
|
||||
|
||||
String formData = "id=" + attachmentId;
|
||||
String formData = "fileId=" + attachmentId;
|
||||
|
||||
HttpRequest request = HttpRequest.newBuilder()
|
||||
.uri(URI.create(DELETE_URL))
|
||||
|
||||
@ -1,10 +1,15 @@
|
||||
package com.yfd.platform.data.service.impl;
|
||||
|
||||
import cn.hutool.core.io.FileUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.yfd.platform.data.domain.FishImportResult;
|
||||
import com.yfd.platform.data.domain.ImportTask;
|
||||
import com.yfd.platform.data.mapper.ImportTaskMapper;
|
||||
import com.yfd.platform.data.service.AttachmentUploadService;
|
||||
import com.yfd.platform.data.service.IImportTaskService;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
@ -25,6 +30,12 @@ public class ImportTaskServiceImpl extends ServiceImpl<ImportTaskMapper, ImportT
|
||||
@Resource
|
||||
private ImportTaskMapper importTaskMapper;
|
||||
|
||||
@Resource
|
||||
private ObjectMapper objectMapper;
|
||||
@Resource
|
||||
AttachmentUploadService attachmentUploadService;
|
||||
|
||||
|
||||
@Override
|
||||
public Page<ImportTask> queryPageList(Page<ImportTask> page, String bizType, String status, String uploadUserId) {
|
||||
return this.page(page, this.lambdaQuery()
|
||||
@ -125,7 +136,21 @@ public class ImportTaskServiceImpl extends ServiceImpl<ImportTaskMapper, ImportT
|
||||
}
|
||||
importTask.setStatus("CONFIRMED");
|
||||
importTask.setUpdatedAt(new Date());
|
||||
return this.updateById(importTask);
|
||||
boolean b = this.updateById(importTask);
|
||||
// 删除本地临时目录数据
|
||||
String resultJson = importTask.getResultJson();
|
||||
if (resultJson != null && !resultJson.isEmpty()) {
|
||||
try {
|
||||
FishImportResult importResult = objectMapper.readValue(resultJson, FishImportResult.class);
|
||||
String tempDir = importResult.getTempDir();
|
||||
// del 方法会递归删除目录及其所有内容
|
||||
FileUtil.del(tempDir);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
// ignore parse error
|
||||
}
|
||||
}
|
||||
return b;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -157,6 +182,45 @@ public class ImportTaskServiceImpl extends ServiceImpl<ImportTaskMapper, ImportT
|
||||
if ("CONFIRMED".equals(currentStatus) || "FAILED".equals(currentStatus) || "CANCELLED".equals(currentStatus)) {
|
||||
return false;
|
||||
}
|
||||
if (importTask.getResultJson() != null && !importTask.getResultJson().isEmpty()) {
|
||||
try {
|
||||
FishImportResult importResult = objectMapper.readValue(importTask.getResultJson(), FishImportResult.class);
|
||||
for (FishImportResult.FishImportRow successRow : importResult.getSuccessRows()) {
|
||||
if (successRow.getData()==null) {
|
||||
continue;
|
||||
}
|
||||
String vdpth = successRow.getData().getVdpth();
|
||||
if (StringUtils.hasText(vdpth)) {
|
||||
List<String> fileIds = StrUtil.split(vdpth, ",");
|
||||
fileIds.forEach(fileId -> attachmentUploadService.deleteFile(fileId));
|
||||
}
|
||||
String picpth = successRow.getData().getPicpth();
|
||||
if (StringUtils.hasText(picpth)) {
|
||||
List<String> fileIds = StrUtil.split(vdpth, ",");
|
||||
fileIds.forEach(fileId -> attachmentUploadService.deleteFile(fileId));
|
||||
}
|
||||
}
|
||||
for (FishImportResult.FishImportRow failedRow : importResult.getFailedRows()) {
|
||||
if (failedRow.getData()==null) {
|
||||
continue;
|
||||
}
|
||||
String vdpth = failedRow.getData().getVdpth();
|
||||
if (StringUtils.hasText(vdpth)) {
|
||||
List<String> fileIds = StrUtil.split(vdpth, ",");
|
||||
fileIds.forEach(fileId -> attachmentUploadService.deleteFile(fileId));
|
||||
}
|
||||
String picpth = failedRow.getData().getPicpth();
|
||||
if (StringUtils.hasText(picpth)) {
|
||||
List<String> fileIds = StrUtil.split(vdpth, ",");
|
||||
fileIds.forEach(fileId -> attachmentUploadService.deleteFile(fileId));
|
||||
}
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
// ignore parse error
|
||||
}
|
||||
}
|
||||
importTask.setStatus("CANCELLED");
|
||||
importTask.setErrorMsg("用户取消: " + operatorId);
|
||||
importTask.setUpdatedAt(new Date());
|
||||
|
||||
@ -39,3 +39,6 @@ springdoc:
|
||||
enabled: true
|
||||
path: /swagger-ui.html
|
||||
packages-to-scan: com.yfd.platform
|
||||
|
||||
attachment:
|
||||
token: ${ATTACHMENT_TOKEN:qgcBkod25ngBa4wu8BtfCPYsJ7lQGVDoexH}
|
||||
Loading…
Reference in New Issue
Block a user