feat: (REQ-3540) 根据文件的fileKey预览文件
This commit is contained in:
parent
d7dc42a8f9
commit
c079f6767a
@ -8,6 +8,8 @@ import cn.axzo.oss.http.model.ApiSignUrlDownloadRequest;
|
||||
import cn.axzo.oss.http.model.ApiSignUrlDownloadResponse;
|
||||
import cn.axzo.oss.http.model.ApiSignUrlUploadRequest;
|
||||
import cn.axzo.oss.http.model.ApiSignUrlUploadResponse;
|
||||
import cn.axzo.oss.http.model.file.FetchFileInfoRequest;
|
||||
import cn.axzo.oss.http.model.file.FetchFileInfoResponse;
|
||||
import cn.axzo.oss.http.model.file.UpdateFileInfoRequest;
|
||||
import cn.axzo.oss.http.model.file.UpdateFileInfoResponse;
|
||||
import cn.azxo.framework.common.model.CommonResponse;
|
||||
@ -82,4 +84,20 @@ public class DocOssGateway {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取文件基础信息
|
||||
*/
|
||||
public FetchFileInfoResponse fetchFileInfo(FetchFileInfoRequest request) {
|
||||
try {
|
||||
log.info("DocOssGateway-fetchFileInfo request:{}", JSON.toJSONString(request));
|
||||
CommonResponse<FetchFileInfoResponse> response = serverFileServiceApi.fetchFileInfo(request);
|
||||
log.info("DocOssGateway-fetchFileInfo result:{}", JSON.toJSONString(response));
|
||||
return response.getData();
|
||||
} catch (Exception e) {
|
||||
log.warn("DocOssGateway-fetchFileInfo exception", e);
|
||||
throw new WpsException(WpsErrorCodeEnum.UPLOAD_ERROR);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,80 @@
|
||||
package cn.axzo.nanopart.doc.wps.support;
|
||||
|
||||
import cn.axzo.nanopart.doc.api.enums.WpsErrorCodeEnum;
|
||||
import cn.axzo.nanopart.doc.api.wps.response.WpsFetchDownloadResponse;
|
||||
import cn.axzo.nanopart.doc.api.wps.response.WpsFetchFileResponse;
|
||||
import cn.axzo.nanopart.doc.integration.DocOssGateway;
|
||||
import cn.axzo.oss.http.model.ApiSignUrlDownloadRequest;
|
||||
import cn.axzo.oss.http.model.ApiSignUrlDownloadResponse;
|
||||
import cn.axzo.oss.http.model.file.FetchFileInfoRequest;
|
||||
import cn.axzo.oss.http.model.file.FetchFileInfoResponse;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.google.common.collect.Lists;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* @author xudawei@axzo.cn
|
||||
* @date 2025/3/21
|
||||
* @description wps支持
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class OssSupport {
|
||||
|
||||
private final DocOssGateway docOssGateway;
|
||||
|
||||
public WpsFetchFileResponse fetchFileInfo(String fileKey) {
|
||||
FetchFileInfoResponse response = docOssGateway.fetchFileInfo(FetchFileInfoRequest.builder().fileKey(fileKey).build());
|
||||
if (Objects.isNull(response) || Objects.isNull(response.getId())) {
|
||||
return null;
|
||||
}
|
||||
return WpsFetchFileResponse.builder()
|
||||
.docCode(response.getFileUuid())
|
||||
.name(response.getFileName())
|
||||
.version(1)
|
||||
.size(response.getStorageSize())
|
||||
.createAt(response.getCreateAt())
|
||||
.updateAt(response.getUpdateAt())
|
||||
.creatorId(response.getCreateBy())
|
||||
.modifierId(response.getUpdateBy())
|
||||
.build();
|
||||
|
||||
}
|
||||
|
||||
public WpsFetchDownloadResponse fetchDownload(String fileKey) {
|
||||
FetchFileInfoResponse response = docOssGateway.fetchFileInfo(FetchFileInfoRequest.builder().fileKey(fileKey).build());
|
||||
if (Objects.isNull(response) || Objects.isNull(response.getId())) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return WpsFetchDownloadResponse.builder()
|
||||
.url(this.downloadUrl(response.getFileUuid()))
|
||||
.digest("")
|
||||
.digestType("")
|
||||
.headers(null)
|
||||
.build();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取文件下载地址
|
||||
*/
|
||||
public String downloadUrl(String fileKey) {
|
||||
if (StringUtils.isEmpty(fileKey)) {
|
||||
return StringUtils.EMPTY;
|
||||
}
|
||||
ApiSignUrlDownloadRequest request = new ApiSignUrlDownloadRequest();
|
||||
request.setFileKeys(Lists.newArrayList(fileKey));
|
||||
List<ApiSignUrlDownloadResponse> responseList = docOssGateway.signUrlFetchDownload(request);
|
||||
|
||||
WpsAssertUtil.isFalse(CollectionUtil.isEmpty(responseList) || StringUtils.isBlank(responseList.get(0).getSignUrl()), WpsErrorCodeEnum.UPLOAD_ERROR);
|
||||
|
||||
return responseList.get(0).getSignUrl();
|
||||
}
|
||||
}
|
||||
@ -1,14 +1,5 @@
|
||||
package cn.axzo.nanopart.doc.wps.wpsbase;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
import cn.axzo.basics.common.util.AssertUtil;
|
||||
import cn.axzo.basics.profiles.dto.basic.PersonProfileDto;
|
||||
import cn.axzo.nanopart.doc.api.enums.WpsErrorCodeEnum;
|
||||
@ -27,14 +18,19 @@ import cn.axzo.nanopart.doc.file.index.IndexManager;
|
||||
import cn.axzo.nanopart.doc.file.index.domain.NameUsedException;
|
||||
import cn.axzo.nanopart.doc.integration.DocOssGateway;
|
||||
import cn.axzo.nanopart.doc.integration.DocUserProfileGateway;
|
||||
import cn.axzo.nanopart.doc.wps.support.OssSupport;
|
||||
import cn.axzo.nanopart.doc.wps.support.WpsAssertUtil;
|
||||
import cn.axzo.nanopart.doc.wps.support.WpsSupport;
|
||||
import cn.axzo.oss.http.model.ApiSignUrlDownloadRequest;
|
||||
import cn.axzo.oss.http.model.ApiSignUrlDownloadResponse;
|
||||
import cn.axzo.oss.http.model.file.UpdateFileInfoRequest;
|
||||
import cn.axzo.oss.http.model.file.UpdateFileInfoResponse;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* wps对接基础信息
|
||||
@ -52,11 +48,19 @@ public class WpsBaseManager {
|
||||
private final DocPermissionProps docPermissionProps;
|
||||
|
||||
private final WpsSupport wpsSupport;
|
||||
|
||||
private final OssSupport ossSupport;
|
||||
/**
|
||||
* 获取文件基础信息
|
||||
* @param docCode 文件编码
|
||||
*/
|
||||
public WpsFetchFileResponse fetchFileBase(String docCode) {
|
||||
|
||||
WpsFetchFileResponse wpsFetchFileResponse = ossSupport.fetchFileInfo(docCode);
|
||||
if (Objects.nonNull(wpsFetchFileResponse) && Objects.nonNull(wpsFetchFileResponse.getDocCode())) {
|
||||
return wpsFetchFileResponse;
|
||||
}
|
||||
|
||||
IndexNode node = wpsSupport.findAndCheckByCode(docCode);
|
||||
return WpsFetchFileResponse.builder()
|
||||
.docCode(docCode)
|
||||
@ -75,30 +79,21 @@ public class WpsBaseManager {
|
||||
* @param docCode 文件编码
|
||||
*/
|
||||
public WpsFetchDownloadResponse fetchDownload(String docCode) {
|
||||
WpsFetchDownloadResponse wpsFetchDownloadResponse = ossSupport.fetchDownload(docCode);
|
||||
if (Objects.nonNull(wpsFetchDownloadResponse) && StringUtils.isNotBlank(wpsFetchDownloadResponse.getUrl())) {
|
||||
return wpsFetchDownloadResponse;
|
||||
}
|
||||
|
||||
IndexNode node = wpsSupport.findAndCheckByCode(docCode);
|
||||
return WpsFetchDownloadResponse.builder()
|
||||
.url(this.downloadUrl(node.getAttributes().getFileAttributes().getOssFileKey()))
|
||||
.url(ossSupport.downloadUrl(node.getAttributes().getFileAttributes().getOssFileKey()))
|
||||
.digest("")
|
||||
.digestType("")
|
||||
.headers(null)
|
||||
.build();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取文件下载地址
|
||||
*/
|
||||
private String downloadUrl(String fileKey) {
|
||||
if (StringUtils.isEmpty(fileKey)) {
|
||||
return StringUtils.EMPTY;
|
||||
}
|
||||
ApiSignUrlDownloadRequest request = new ApiSignUrlDownloadRequest();
|
||||
request.setFileKeys(Lists.newArrayList(fileKey));
|
||||
List<ApiSignUrlDownloadResponse> responseList = docOssGateway.signUrlFetchDownload(request);
|
||||
|
||||
WpsAssertUtil.isFalse(CollectionUtil.isEmpty(responseList) || StringUtils.isBlank(responseList.get(0).getSignUrl()), WpsErrorCodeEnum.UPLOAD_ERROR);
|
||||
|
||||
return responseList.get(0).getSignUrl();
|
||||
}
|
||||
|
||||
/**
|
||||
* 文档权限
|
||||
@ -107,7 +102,7 @@ public class WpsBaseManager {
|
||||
public WpsPermissionResponse permission(WpsPermissionRequest request) {
|
||||
IndexNode indexNode = indexManager.findOrNull(request.getDocCode());
|
||||
|
||||
if (StringUtils.isNotBlank(indexNode.getOrCreateFileAttributes().getFileExtension())
|
||||
if (Objects.nonNull(indexNode) && StringUtils.isNotBlank(indexNode.getOrCreateFileAttributes().getFileExtension())
|
||||
&& indexNode.getOrCreateFileAttributes().getFileExtension().equalsIgnoreCase("pdf")) {
|
||||
return WpsPermissionResponse.preview(request.getPersonId());
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user