[考勤对接]获取元数据信息优化
This commit is contained in:
parent
73b73087bb
commit
0db846dc85
@ -30,6 +30,7 @@ import cn.axzo.oss.http.model.ServerFileUploadResponse;
|
|||||||
import cn.axzo.oss.http.model.ServerFileUploadV2Request;
|
import cn.axzo.oss.http.model.ServerFileUploadV2Request;
|
||||||
import cn.axzo.oss.manager.api.dto.request.FindFileKeyDto;
|
import cn.axzo.oss.manager.api.dto.request.FindFileKeyDto;
|
||||||
import cn.axzo.oss.manager.api.dto.request.FindFileUrlDto;
|
import cn.axzo.oss.manager.api.dto.request.FindFileUrlDto;
|
||||||
|
import cn.axzo.oss.manager.api.dto.request.GetObjectMetaDto;
|
||||||
import cn.axzo.oss.manager.api.dto.request.ServerFileDeleteDto;
|
import cn.axzo.oss.manager.api.dto.request.ServerFileDeleteDto;
|
||||||
import cn.axzo.oss.manager.api.dto.request.ServerFileUploadByUrlDto;
|
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.ServerFileUploadDto;
|
||||||
@ -163,32 +164,8 @@ public class ServerFileController implements ServerFileServiceApi {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public CommonResponse<GetObjectMetaResponse> getObjectMeta(@RequestBody GetObjectMetaRequest request) {
|
public CommonResponse<GetObjectMetaResponse> getObjectMeta(@RequestBody GetObjectMetaRequest request) {
|
||||||
if (!StringUtils.hasText(request.getUrl()) && !StringUtils.hasText(request.getBucketName()) && !StringUtils.hasText(request.getKey())) {
|
GetObjectMetaDto dto = BeanConvertUtil.copyBean(request, GetObjectMetaDto.class);
|
||||||
throw new BizException(CodeEnum.URL_BUCKET_NAME_KEY_ALL_EMPTY);
|
return CommonResponse.success(BeanConverter.convert(this.fileService.getObjectMeta(dto), GetObjectMetaResponse.class));
|
||||||
}
|
|
||||||
|
|
||||||
String bucketName = UrlUtil.fetchBucketName(request.getBucketName(), request.getUrl());
|
|
||||||
String bucketKey = UrlUtil.fetchBucketKey(request.getKey(), request.getUrl());
|
|
||||||
ManaGetObjectMetaResponse response = this.fileService.getObjectMeta(bucketName
|
|
||||||
, bucketKey, request.getUrl()
|
|
||||||
, this.swtchChannelCode(request.getUrl()));
|
|
||||||
return CommonResponse.success(BeanConverter.convert(response, GetObjectMetaResponse.class));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 决定渠道
|
|
||||||
*/
|
|
||||||
private String swtchChannelCode(String url) {
|
|
||||||
if (!StringUtils.hasText(url)) {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
if (url.toLowerCase().contains("aliyun")) {
|
|
||||||
return ChannelTypeEnum.OSS.getChannelCode();
|
|
||||||
}
|
|
||||||
if (url.toLowerCase().contains("huaweicloud")) {
|
|
||||||
return ChannelTypeEnum.OBS.getChannelCode();
|
|
||||||
}
|
|
||||||
return url;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -39,6 +39,9 @@ public class UrlUtil {
|
|||||||
if (org.springframework.util.StringUtils.hasText(bucketName)) {
|
if (org.springframework.util.StringUtils.hasText(bucketName)) {
|
||||||
return bucketName;
|
return bucketName;
|
||||||
}
|
}
|
||||||
|
if (url.contains("?")) {
|
||||||
|
url = url.split("\\?")[0];
|
||||||
|
}
|
||||||
if (org.springframework.util.StringUtils.hasText(url)) {
|
if (org.springframework.util.StringUtils.hasText(url)) {
|
||||||
if (url.contains(".") && url.contains("//")) {
|
if (url.contains(".") && url.contains("//")) {
|
||||||
return url.substring(url.indexOf("//") + 2,url.indexOf("."));
|
return url.substring(url.indexOf("//") + 2,url.indexOf("."));
|
||||||
|
|||||||
@ -31,4 +31,8 @@ public class GetObjectMetaRequest {
|
|||||||
* 唯一标识
|
* 唯一标识
|
||||||
*/
|
*/
|
||||||
private String id;
|
private String id;
|
||||||
|
/**
|
||||||
|
* 文件对象key
|
||||||
|
*/
|
||||||
|
private String fileKey;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,38 @@
|
|||||||
|
package cn.axzo.oss.manager.api.dto.request;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author: xudawei
|
||||||
|
* @date: 2024-07-16
|
||||||
|
* @description: 元数据
|
||||||
|
**/
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class GetObjectMetaDto {
|
||||||
|
/**
|
||||||
|
* 桶名称
|
||||||
|
*/
|
||||||
|
private String bucketName;
|
||||||
|
/**
|
||||||
|
* 文件key
|
||||||
|
*/
|
||||||
|
private String key;
|
||||||
|
/**
|
||||||
|
* 文件url
|
||||||
|
*/
|
||||||
|
private String url;
|
||||||
|
/**
|
||||||
|
* 唯一标识
|
||||||
|
*/
|
||||||
|
private String id;
|
||||||
|
/**
|
||||||
|
* 文件对象key
|
||||||
|
*/
|
||||||
|
private String fileKey;
|
||||||
|
}
|
||||||
@ -4,6 +4,7 @@ import cn.axzo.framework.auth.domain.ContextInfo;
|
|||||||
import cn.axzo.oss.manager.api.dto.request.DeleteFileDto;
|
import cn.axzo.oss.manager.api.dto.request.DeleteFileDto;
|
||||||
import cn.axzo.oss.manager.api.dto.request.FindFileKeyDto;
|
import cn.axzo.oss.manager.api.dto.request.FindFileKeyDto;
|
||||||
import cn.axzo.oss.manager.api.dto.request.FindFileUrlDto;
|
import cn.axzo.oss.manager.api.dto.request.FindFileUrlDto;
|
||||||
|
import cn.axzo.oss.manager.api.dto.request.GetObjectMetaDto;
|
||||||
import cn.axzo.oss.manager.api.dto.request.MultipartUploadCompleteDto;
|
import cn.axzo.oss.manager.api.dto.request.MultipartUploadCompleteDto;
|
||||||
import cn.axzo.oss.manager.api.dto.request.MultipartUploadDto;
|
import cn.axzo.oss.manager.api.dto.request.MultipartUploadDto;
|
||||||
import cn.axzo.oss.manager.api.dto.request.MultipartUploadFileDto;
|
import cn.axzo.oss.manager.api.dto.request.MultipartUploadFileDto;
|
||||||
@ -23,6 +24,7 @@ import cn.axzo.oss.manager.api.dto.response.ServerFileDownloadResponse;
|
|||||||
import cn.axzo.oss.manager.api.dto.response.ServerFileUploadResponse;
|
import cn.axzo.oss.manager.api.dto.response.ServerFileUploadResponse;
|
||||||
import cn.axzo.oss.manager.api.dto.response.SignUrlDownloadResponse;
|
import cn.axzo.oss.manager.api.dto.response.SignUrlDownloadResponse;
|
||||||
import cn.axzo.oss.manager.api.dto.response.SignUrlUploadResponse;
|
import cn.axzo.oss.manager.api.dto.response.SignUrlUploadResponse;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -93,6 +95,11 @@ public interface FileService {
|
|||||||
*/
|
*/
|
||||||
ManaGetObjectMetaResponse getObjectMeta(String bucketName, String key, String url,String channelCode);
|
ManaGetObjectMetaResponse getObjectMeta(String bucketName, String key, String url,String channelCode);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文件元数据信息
|
||||||
|
*/
|
||||||
|
ManaGetObjectMetaResponse getObjectMeta(@RequestBody GetObjectMetaDto dto);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 授权给第三方下载
|
* 授权给第三方下载
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
package cn.axzo.oss.service.impl;
|
package cn.axzo.oss.service.impl;
|
||||||
|
|
||||||
|
import cn.axzo.core.utils.converter.BeanConverter;
|
||||||
import cn.axzo.framework.auth.domain.ContextInfo;
|
import cn.axzo.framework.auth.domain.ContextInfo;
|
||||||
import cn.axzo.log.platform.client.LogPlatClient;
|
import cn.axzo.log.platform.client.LogPlatClient;
|
||||||
import cn.axzo.log.platform.client.model.OperateLogReq;
|
import cn.axzo.log.platform.client.model.OperateLogReq;
|
||||||
@ -33,6 +34,7 @@ import cn.axzo.oss.manager.api.dto.PartETag;
|
|||||||
import cn.axzo.oss.manager.api.dto.request.DeleteFileDto;
|
import cn.axzo.oss.manager.api.dto.request.DeleteFileDto;
|
||||||
import cn.axzo.oss.manager.api.dto.request.FindFileKeyDto;
|
import cn.axzo.oss.manager.api.dto.request.FindFileKeyDto;
|
||||||
import cn.axzo.oss.manager.api.dto.request.FindFileUrlDto;
|
import cn.axzo.oss.manager.api.dto.request.FindFileUrlDto;
|
||||||
|
import cn.axzo.oss.manager.api.dto.request.GetObjectMetaDto;
|
||||||
import cn.axzo.oss.manager.api.dto.request.MultipartUploadCompleteDto;
|
import cn.axzo.oss.manager.api.dto.request.MultipartUploadCompleteDto;
|
||||||
import cn.axzo.oss.manager.api.dto.request.MultipartUploadDto;
|
import cn.axzo.oss.manager.api.dto.request.MultipartUploadDto;
|
||||||
import cn.axzo.oss.manager.api.dto.request.MultipartUploadFileDto;
|
import cn.axzo.oss.manager.api.dto.request.MultipartUploadFileDto;
|
||||||
@ -56,6 +58,7 @@ import cn.axzo.oss.manager.api.vo.SignUrlUploadVo;
|
|||||||
import cn.axzo.oss.service.api.FileService;
|
import cn.axzo.oss.service.api.FileService;
|
||||||
import cn.axzo.oss.service.metafile.WithFileFactory;
|
import cn.axzo.oss.service.metafile.WithFileFactory;
|
||||||
import cn.axzo.oss.service.metafile.WithFileService;
|
import cn.axzo.oss.service.metafile.WithFileService;
|
||||||
|
import cn.azxo.framework.common.model.CommonResponse;
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
@ -67,6 +70,7 @@ import org.springframework.cloud.context.config.annotation.RefreshScope;
|
|||||||
import org.springframework.core.env.Environment;
|
import org.springframework.core.env.Environment;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@ -1110,6 +1114,59 @@ public class FileServiceImpl implements FileService {
|
|||||||
fileManager.deleteFile(file.getBucketName(), tgtFileKey,file.getChannelCode());
|
fileManager.deleteFile(file.getBucketName(), tgtFileKey,file.getChannelCode());
|
||||||
fileDao.deleteFile(dto.getFileKey());
|
fileDao.deleteFile(dto.getFileKey());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文件元数据信息
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public ManaGetObjectMetaResponse getObjectMeta(@RequestBody GetObjectMetaDto dto) {
|
||||||
|
if (!org.springframework.util.StringUtils.hasText(dto.getUrl()) && !org.springframework.util.StringUtils.hasText(dto.getBucketName())
|
||||||
|
&& !org.springframework.util.StringUtils.hasText(dto.getKey()) && !org.springframework.util.StringUtils.hasText(dto.getFileKey())) {
|
||||||
|
throw new BizException(CodeEnum.URL_BUCKET_NAME_KEY_ALL_EMPTY);
|
||||||
|
}
|
||||||
|
String bucketName = StringUtils.EMPTY;
|
||||||
|
String bucketKey = StringUtils.EMPTY;
|
||||||
|
String channelCode = StringUtils.EMPTY;
|
||||||
|
String url = StringUtils.EMPTY;
|
||||||
|
if (org.springframework.util.StringUtils.hasText(dto.getFileKey())) {
|
||||||
|
File byFileUuid = this.fileDao.getByFileUuid(dto.getFileKey());
|
||||||
|
if (Objects.nonNull(byFileUuid)) {
|
||||||
|
bucketName = byFileUuid.getBucketName();
|
||||||
|
bucketKey = Utility.generateFileKey(byFileUuid.getDirectory(), byFileUuid.getFileUuid(), byFileUuid.getFileFormat());
|
||||||
|
channelCode = byFileUuid.getChannelCode();
|
||||||
|
url = byFileUuid.getFileUrl();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (StringUtils.isBlank(bucketName) && StringUtils.isBlank(bucketKey)) {
|
||||||
|
bucketName = UrlUtil.fetchBucketName(dto.getBucketName(), dto.getUrl());
|
||||||
|
bucketKey = UrlUtil.fetchBucketKey(dto.getKey(), dto.getUrl());
|
||||||
|
channelCode = this.swtchChannelCode(dto.getUrl());
|
||||||
|
url = dto.getUrl();
|
||||||
|
}
|
||||||
|
|
||||||
|
ManaGetObjectMetaResponse response = this.getObjectMeta(bucketName
|
||||||
|
, bucketKey, url
|
||||||
|
, channelCode);
|
||||||
|
return BeanConverter.convert(response, ManaGetObjectMetaResponse.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 决定渠道
|
||||||
|
*/
|
||||||
|
private String swtchChannelCode(String url) {
|
||||||
|
if (!org.springframework.util.StringUtils.hasText(url)) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
if (url.toLowerCase().contains("aliyun")) {
|
||||||
|
return ChannelTypeEnum.OSS.getChannelCode();
|
||||||
|
}
|
||||||
|
if (url.toLowerCase().contains("huaweicloud")) {
|
||||||
|
return ChannelTypeEnum.OBS.getChannelCode();
|
||||||
|
}
|
||||||
|
return url;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 元数据
|
* 元数据
|
||||||
*/
|
*/
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user