Commit 2ad1b082 by zhangxingmin

push

parent 8f440bf8
......@@ -43,7 +43,7 @@ public class ApiOssFileController implements ApiOssFileFeignClient {
* @return
*/
@Override
public Result del(String fileBizId) {
return apiOssFileService.del(fileBizId);
public Result del(String fileBizId,String projectBizId) {
return apiOssFileService.del(fileBizId,projectBizId);
}
}
......@@ -11,7 +11,7 @@ import java.util.List;
public interface ApiOssFileService {
Result<List<ApiOssFileListResponse>> list(ApiOssFileListRequest request);
Result del(String fileBizId);
Result del(String fileBizId,String projectBizId);
Result updateByMaterial(List<RelObjectMaterial> relObjectMaterialList,
List<ApiRelMaterialDto> materialDtoList);
......
package com.yd.oss.api.service.impl;
import com.yd.auth.core.dto.AuthUserDto;
import com.yd.auth.core.utils.SecurityUtil;
import com.yd.common.enums.CommonEnum;
import com.yd.common.enums.ResultCode;
import com.yd.common.exception.BusinessException;
......@@ -12,6 +14,7 @@ import com.yd.oss.service.dto.OssFileDto;
import com.yd.oss.service.model.OssFile;
import com.yd.oss.service.model.RelObjectMaterial;
import com.yd.oss.service.service.IOssFileService;
import com.yd.oss.service.service.OssService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -28,6 +31,9 @@ public class ApiOssFileServiceImpl implements ApiOssFileService {
@Autowired
private IOssFileService iOssFileService;
@Autowired
private OssService ossService;
/**
* 列表查询-文件元数据信息
* @param request
......@@ -45,10 +51,13 @@ public class ApiOssFileServiceImpl implements ApiOssFileService {
* @return
*/
@Override
public Result del(String fileBizId) {
Result<OssFile> result = checkOssFileIsExist(fileBizId);
OssFile ossFile = result.getData();
iOssFileService.removeById(ossFile.getId());
public Result del(String fileBizId, String projectBizId) {
// 获取当前操作人
AuthUserDto authUser = SecurityUtil.getCurrentLoginUser();
String operator = authUser != null ? authUser.getUsername() : "system";
// 调用OSS服务删除文件(包含OSS删除和数据库物理删除)
ossService.deleteFileByBizId(fileBizId, operator);
return Result.success();
}
......
......@@ -33,6 +33,7 @@ public interface ApiOssFileFeignClient {
* @return
*/
@DeleteMapping("/del")
Result del(@NotBlank(message = "文件元数据表唯一业务ID不能为空") @RequestParam(value = "fileBizId") String fileBizId);
Result del(@NotBlank(message = "文件元数据表唯一业务ID不能为空") @RequestParam(value = "fileBizId") String fileBizId,
@RequestParam("projectBizId") String projectBizId);
}
......@@ -24,7 +24,7 @@ public class ApiOssFileFeignFallbackFactory implements FallbackFactory<ApiOssFil
}
@Override
public Result del(String fileBizId) {
public Result del(String fileBizId,String projectBizId) {
return null;
}
};
......
......@@ -21,6 +21,8 @@ public interface IOssProviderService extends IService<OssProvider> {
OssProvider getProviderById(Long id);
OssProvider getProviderByBizId(String providerBizId);
List<OssProvider> getActiveProviders();
boolean saveProvider(OssProvider provider);
......
......@@ -32,6 +32,8 @@ public interface OssService {
// 删除文件
boolean deleteFile(String fileKey, String bucketName, String operator);
boolean deleteFileByBizId(String fileBizId, String operator);
// 删除文件(使用默认存储桶)
boolean deleteFile(String fileKey, String operator);
......
......@@ -478,6 +478,65 @@ public class AliYunOssServiceImpl implements OssService {
}
}
@Override
public boolean deleteFileByBizId(String fileBizId, String operator) {
long startTime = System.currentTimeMillis();
String operationResult = "success";
String errorMessage = null;
OssFile ossFile = null;
try {
// 查询文件记录
ossFile = ossFileService.queryOne(fileBizId);
if (ossFile == null) {
throw new BusinessException("文件不存在: " + fileBizId);
}
// 根据提供商ID获取并切换提供商
OssProvider provider = ossProviderService.getProviderByBizId(ossFile.getProviderBizId());
if (provider == null) {
throw new BusinessException("提供商不存在: " + ossFile.getProviderBizId());
}
switchToProvider(provider);
// 删除OSS文件
realOssClient.deleteObject(ossFile.getBucketName(), ossFile.getFileKey());
// 物理删除数据库记录
ossFileService.removeById(ossFile.getId());
// 记录成功操作日志
OssOperationLog operationLog = new OssOperationLog();
operationLog.setFileBizId(ossFile.getFileBizId());
operationLog.setOperationType("delete");
operationLog.setOperationUser(operator);
operationLog.setOperationResult(operationResult);
operationLog.setErrorMessage(errorMessage);
operationLog.setClientIp(IpUtil.getClientIp());
operationLog.setCostTime(System.currentTimeMillis() - startTime);
ossFileService.saveOperationLog(operationLog);
log.info("文件删除成功: {}/{}", ossFile.getBucketName(), ossFile.getFileKey());
return true;
} catch (Exception e) {
operationResult = "failure";
errorMessage = e.getMessage();
log.error("删除文件失败: fileBizId={}", fileBizId, e);
// 记录失败操作日志
OssOperationLog operationLog = new OssOperationLog();
operationLog.setFileBizId(ossFile != null ? ossFile.getFileBizId() : "-1");
operationLog.setOperationType("delete");
operationLog.setOperationUser(operator);
operationLog.setOperationResult(operationResult);
operationLog.setErrorMessage(errorMessage);
operationLog.setClientIp(IpUtil.getClientIp());
operationLog.setCostTime(System.currentTimeMillis() - startTime);
ossFileService.saveOperationLog(operationLog);
throw new RuntimeException("删除文件失败: " + fileBizId, e);
}
}
/**
* 删除文件(使用默认存储桶)
* @param fileKey
......
......@@ -77,6 +77,14 @@ public class OssProviderServiceImpl extends ServiceImpl<OssProviderMapper, OssPr
return provider;
}
@Override
public OssProvider getProviderByBizId(String providerBizId) {
return baseMapper.selectOne(new LambdaQueryWrapper<OssProvider>()
.eq(OssProvider::getProviderBizId,providerBizId)
.last(" limit 1 ")
);
}
/**
* 获取所有激活的OSS提供商
* @return
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment