feat:(REQ-3540) 更新文件接口添加

This commit is contained in:
xudawei 2025-03-12 17:41:12 +08:00
parent a4c336b4cb
commit 5d03e66a00
9 changed files with 211 additions and 0 deletions

View File

@ -29,6 +29,8 @@ import cn.axzo.oss.http.model.ServerFileUploadResponse;
import cn.axzo.oss.http.model.ServerFileUploadV2Request;
import cn.axzo.oss.http.model.copyobject.ServerFileBatchCopyObjectRequest;
import cn.axzo.oss.http.model.copyobject.ServerFileBatchCopyObjectResponse;
import cn.axzo.oss.http.model.file.UpdateFileInfoRequest;
import cn.axzo.oss.http.model.file.UpdateFileInfoResponse;
import cn.axzo.oss.manager.api.dto.request.FileCopyObjectDto;
import cn.axzo.oss.manager.api.dto.request.FindFileKeyDto;
import cn.axzo.oss.manager.api.dto.request.FindFileUrlDto;
@ -39,6 +41,7 @@ import cn.axzo.oss.manager.api.dto.request.ServerFileUploadByUrlDto;
import cn.axzo.oss.manager.api.dto.request.ServerFileUploadDto;
import cn.axzo.oss.manager.api.dto.request.SignUrlDownloadDto;
import cn.axzo.oss.manager.api.dto.request.SignUrlUploadDto;
import cn.axzo.oss.manager.api.dto.request.file.UpdateFileInfoDto;
import cn.axzo.oss.manager.api.dto.response.FileCopyObjectResponse;
import cn.axzo.oss.service.api.FileByUrlService;
import cn.axzo.oss.service.api.FileCopyToDictService;
@ -239,4 +242,12 @@ public class ServerFileController implements ServerFileServiceApi {
List<FileCopyObjectResponse> fileCopyObjectResponses = fileService.batchCopyObject(fileCopyObjectDtos, request.getAppCode());
return CommonResponse.success(ServerFileBatchCopyObjectResponse.builder().responses(BeanUtil.copyToList(fileCopyObjectResponses, ServerFileBatchCopyObjectResponse.ServerFileCopyObjectResponse.class)).build());
}
/**
* 更新文件信息
*/
public CommonResponse<UpdateFileInfoResponse> updateFileInfo(@Valid @RequestBody UpdateFileInfoRequest request) {
UpdateFileInfoDto updateFileInfoDto = BeanUtil.copyProperties(request, UpdateFileInfoDto.class);
return CommonResponse.success(UpdateFileInfoResponse.builder().updateFlag(this.fileService.updateFileInfo(updateFileInfoDto)).build());
}
}

View File

@ -32,4 +32,10 @@ public interface FileDao extends IService<File> {
File getByUrlMd5(String urlMd5);
boolean deleteFile(String fileUuid);
/**
* 更新文件
* 目前只有文件名称更新后续有其他属性可以添加
*/
boolean updateFileById(File file);
}

View File

@ -10,9 +10,11 @@ import cn.axzo.oss.dal.repository.FileDao;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Lists;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Objects;
/**
* <p>
@ -75,4 +77,18 @@ public class FileDaoImpl extends ServiceImpl<FileMapper, File> implements FileDa
.set(File::getStatus, FileStatusEnum.STATUS_DELETE.getCode())
.set(File::getIsDelete, IsDeleteEnum.YES.getCode()).update();
}
/**
* 更新文件
* 目前只有文件名称更新后续有其他属性可以添加
*/
@Override
public boolean updateFileById(File file) {
if (Objects.isNull(file) || Objects.isNull(file.getId()) || StringUtils.isBlank(file.getFileUuid())) {
return false;
}
return lambdaUpdate().eq(File::getId, file.getId())
.set(StringUtils.isNotBlank(file.getFileName()), File::getFileName, file.getFileName())
.update();
}
}

View File

@ -24,6 +24,8 @@ import cn.axzo.oss.http.model.ServerFileUploadResponse;
import cn.axzo.oss.http.model.ServerFileUploadV2Request;
import cn.axzo.oss.http.model.copyobject.ServerFileBatchCopyObjectRequest;
import cn.axzo.oss.http.model.copyobject.ServerFileBatchCopyObjectResponse;
import cn.axzo.oss.http.model.file.UpdateFileInfoRequest;
import cn.axzo.oss.http.model.file.UpdateFileInfoResponse;
import cn.azxo.framework.common.model.CommonResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestBody;
@ -143,4 +145,10 @@ public interface ServerFileServiceApi {
@RequestMapping(value = "/api/server/batchCopyObject", method = RequestMethod.POST)
CommonResponse<ServerFileBatchCopyObjectResponse> batchCopyObject(@Valid @RequestBody ServerFileBatchCopyObjectRequest request);
/**
* 更新文件信息
*/
@RequestMapping(value = "/api/server/batchCopyObject", method = RequestMethod.POST)
CommonResponse<UpdateFileInfoResponse> updateFileInfo(@Valid @RequestBody UpdateFileInfoRequest request);
}

View File

@ -0,0 +1,44 @@
package cn.axzo.oss.http.model.file;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 更新文件请求
*
* @author xudawei
* @date 2025-03-12
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class UpdateFileInfoRequest {
/**
* 文件Id
*/
private Long fileId;
/**
* 文件fileKey
*/
private String fileKey;
/**
* 需要更新属性
*/
private UpdateFileInfo updateFileInfo;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public static class UpdateFileInfo{
/**
* 文件名称
*/
private String fileName;
}
}

View File

@ -0,0 +1,27 @@
package cn.axzo.oss.http.model.file;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* 文件更新返回
*
* @author xudawei
* @date 2025-03-12
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class UpdateFileInfoResponse {
/**
* 文件Id
*/
private boolean updateFlag;
}

View File

@ -0,0 +1,55 @@
package cn.axzo.oss.manager.api.dto.request.file;
import cn.axzo.oss.dal.entity.File;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author xudawei@axzo.cn
* @date 2025/3/12
* @description 更新文件信息
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class UpdateFileInfoDto {
/**
* 文件Id
*/
private Long fileId;
/**
* 文件fileKey
*/
private String fileKey;
/**
* 需要更新属性
*/
private UpdateFileInfo updateFileInfo;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public static class UpdateFileInfo{
/**
* 文件名称
*/
private String fileName;
}
/**
* 创建文件
*/
public static File create(Long id, UpdateFileInfo updateFileInfo){
File file = new File();
file.setId(id);
file.setFileName(updateFileInfo.getFileName());
return file;
}
}

View File

@ -17,6 +17,7 @@ import cn.axzo.oss.manager.api.dto.request.ServerFileDownloadDto;
import cn.axzo.oss.manager.api.dto.request.ServerFileUploadDto;
import cn.axzo.oss.manager.api.dto.request.SignUrlDownloadDto;
import cn.axzo.oss.manager.api.dto.request.SignUrlUploadDto;
import cn.axzo.oss.manager.api.dto.request.file.UpdateFileInfoDto;
import cn.axzo.oss.manager.api.dto.response.FileCopyObjectResponse;
import cn.axzo.oss.manager.api.dto.response.FileInformationResponse;
import cn.axzo.oss.manager.api.dto.response.FindFileKeyResponse;
@ -126,4 +127,9 @@ public interface FileService {
* 2 相同通道则直接调用复制方法
*/
List<FileCopyObjectResponse> batchCopyObject(List<FileCopyObjectDto> dtoList, String appCode);
/**
* 更新文件信息
*/
boolean updateFileInfo(UpdateFileInfoDto updateFileInfoDto);
}

View File

@ -47,6 +47,7 @@ import cn.axzo.oss.manager.api.dto.request.ServerFileDownloadDto;
import cn.axzo.oss.manager.api.dto.request.ServerFileUploadDto;
import cn.axzo.oss.manager.api.dto.request.SignUrlDownloadDto;
import cn.axzo.oss.manager.api.dto.request.SignUrlUploadDto;
import cn.axzo.oss.manager.api.dto.request.file.UpdateFileInfoDto;
import cn.axzo.oss.manager.api.dto.response.FileCopyObjectResponse;
import cn.axzo.oss.manager.api.dto.response.FileInformationResponse;
import cn.axzo.oss.manager.api.dto.response.FindFileKeyResponse;
@ -1363,4 +1364,41 @@ public class FileServiceImpl implements FileService {
return returnList;
}
/**
* 更新文件信息
*/
@Override
public boolean updateFileInfo(UpdateFileInfoDto updateFileInfoDto) {
//构建需要更新的信息
//1 fileId有值则用fileId直接更新文件信息
//2 fileId无值fileKey有值则用fileKey查询file信息
File file = this.buildUpdateFileInfo(updateFileInfoDto);
if (Objects.isNull(file)) {
return false;
}
return this.fileDao.updateFileById(file);
}
/**
* 构建需要更新的信息
* 1 fileId有值则用fileId直接更新文件信息
* 2 fileId无值fileKey有值则用fileKey查询file信息
*/
private File buildUpdateFileInfo(UpdateFileInfoDto updateFileInfoDto) {
//fileId有值则用fileId直接更新文件信息
if (Objects.nonNull(updateFileInfoDto.getFileId())) {
return UpdateFileInfoDto.create(updateFileInfoDto.getFileId(), updateFileInfoDto.getUpdateFileInfo());
} else {
//fileId无值fileKey有值则用fileKey查询file信息
//根据查询file信息更新文件
if (StringUtils.isNotBlank(updateFileInfoDto.getFileKey())) {
File byFileUuid = this.fileDao.getByFileUuid(updateFileInfoDto.getFileKey());
if (Objects.isNull(byFileUuid)) {
return null;
}
return UpdateFileInfoDto.create(byFileUuid.getId(), updateFileInfoDto.getUpdateFileInfo());
}
}
return null;
}
}