Commit 2ad1b082 by zhangxingmin

push

parent 8f440bf8
...@@ -43,7 +43,7 @@ public class ApiOssFileController implements ApiOssFileFeignClient { ...@@ -43,7 +43,7 @@ public class ApiOssFileController implements ApiOssFileFeignClient {
* @return * @return
*/ */
@Override @Override
public Result del(String fileBizId) { public Result del(String fileBizId,String projectBizId) {
return apiOssFileService.del(fileBizId); return apiOssFileService.del(fileBizId,projectBizId);
} }
} }
...@@ -11,7 +11,7 @@ import java.util.List; ...@@ -11,7 +11,7 @@ import java.util.List;
public interface ApiOssFileService { public interface ApiOssFileService {
Result<List<ApiOssFileListResponse>> list(ApiOssFileListRequest request); Result<List<ApiOssFileListResponse>> list(ApiOssFileListRequest request);
Result del(String fileBizId); Result del(String fileBizId,String projectBizId);
Result updateByMaterial(List<RelObjectMaterial> relObjectMaterialList, Result updateByMaterial(List<RelObjectMaterial> relObjectMaterialList,
List<ApiRelMaterialDto> materialDtoList); List<ApiRelMaterialDto> materialDtoList);
......
package com.yd.oss.api.service.impl; 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.CommonEnum;
import com.yd.common.enums.ResultCode; import com.yd.common.enums.ResultCode;
import com.yd.common.exception.BusinessException; import com.yd.common.exception.BusinessException;
...@@ -12,6 +14,7 @@ import com.yd.oss.service.dto.OssFileDto; ...@@ -12,6 +14,7 @@ import com.yd.oss.service.dto.OssFileDto;
import com.yd.oss.service.model.OssFile; import com.yd.oss.service.model.OssFile;
import com.yd.oss.service.model.RelObjectMaterial; import com.yd.oss.service.model.RelObjectMaterial;
import com.yd.oss.service.service.IOssFileService; import com.yd.oss.service.service.IOssFileService;
import com.yd.oss.service.service.OssService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -28,6 +31,9 @@ public class ApiOssFileServiceImpl implements ApiOssFileService { ...@@ -28,6 +31,9 @@ public class ApiOssFileServiceImpl implements ApiOssFileService {
@Autowired @Autowired
private IOssFileService iOssFileService; private IOssFileService iOssFileService;
@Autowired
private OssService ossService;
/** /**
* 列表查询-文件元数据信息 * 列表查询-文件元数据信息
* @param request * @param request
...@@ -45,10 +51,13 @@ public class ApiOssFileServiceImpl implements ApiOssFileService { ...@@ -45,10 +51,13 @@ public class ApiOssFileServiceImpl implements ApiOssFileService {
* @return * @return
*/ */
@Override @Override
public Result del(String fileBizId) { public Result del(String fileBizId, String projectBizId) {
Result<OssFile> result = checkOssFileIsExist(fileBizId); // 获取当前操作人
OssFile ossFile = result.getData(); AuthUserDto authUser = SecurityUtil.getCurrentLoginUser();
iOssFileService.removeById(ossFile.getId()); String operator = authUser != null ? authUser.getUsername() : "system";
// 调用OSS服务删除文件(包含OSS删除和数据库物理删除)
ossService.deleteFileByBizId(fileBizId, operator);
return Result.success(); return Result.success();
} }
......
...@@ -33,6 +33,7 @@ public interface ApiOssFileFeignClient { ...@@ -33,6 +33,7 @@ public interface ApiOssFileFeignClient {
* @return * @return
*/ */
@DeleteMapping("/del") @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 ...@@ -24,7 +24,7 @@ public class ApiOssFileFeignFallbackFactory implements FallbackFactory<ApiOssFil
} }
@Override @Override
public Result del(String fileBizId) { public Result del(String fileBizId,String projectBizId) {
return null; return null;
} }
}; };
......
...@@ -21,6 +21,8 @@ public interface IOssProviderService extends IService<OssProvider> { ...@@ -21,6 +21,8 @@ public interface IOssProviderService extends IService<OssProvider> {
OssProvider getProviderById(Long id); OssProvider getProviderById(Long id);
OssProvider getProviderByBizId(String providerBizId);
List<OssProvider> getActiveProviders(); List<OssProvider> getActiveProviders();
boolean saveProvider(OssProvider provider); boolean saveProvider(OssProvider provider);
......
...@@ -32,6 +32,8 @@ public interface OssService { ...@@ -32,6 +32,8 @@ public interface OssService {
// 删除文件 // 删除文件
boolean deleteFile(String fileKey, String bucketName, String operator); boolean deleteFile(String fileKey, String bucketName, String operator);
boolean deleteFileByBizId(String fileBizId, String operator);
// 删除文件(使用默认存储桶) // 删除文件(使用默认存储桶)
boolean deleteFile(String fileKey, String operator); boolean deleteFile(String fileKey, String operator);
......
...@@ -478,6 +478,65 @@ public class AliYunOssServiceImpl implements OssService { ...@@ -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 * @param fileKey
......
...@@ -77,6 +77,14 @@ public class OssProviderServiceImpl extends ServiceImpl<OssProviderMapper, OssPr ...@@ -77,6 +77,14 @@ public class OssProviderServiceImpl extends ServiceImpl<OssProviderMapper, OssPr
return provider; return provider;
} }
@Override
public OssProvider getProviderByBizId(String providerBizId) {
return baseMapper.selectOne(new LambdaQueryWrapper<OssProvider>()
.eq(OssProvider::getProviderBizId,providerBizId)
.last(" limit 1 ")
);
}
/** /**
* 获取所有激活的OSS提供商 * 获取所有激活的OSS提供商
* @return * @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