add 获取文件url/获取文件filekey接口
This commit is contained in:
parent
2f3a69d278
commit
16722c76e4
@ -3,9 +3,9 @@ package cn.axzo.oss.client.controller;
|
||||
import cn.axzo.core.utils.converter.BeanConverter;
|
||||
import cn.axzo.oss.common.utils.BeanConvertUtil;
|
||||
import cn.axzo.oss.http.api.ServerFileServiceApi;
|
||||
import cn.axzo.oss.http.model.ServerFileDeleteRequest;
|
||||
import cn.axzo.oss.http.model.ServerFileUploadRequest;
|
||||
import cn.axzo.oss.http.model.ServerFileUploadResponse;
|
||||
import cn.axzo.oss.http.model.*;
|
||||
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.ServerFileDeleteDto;
|
||||
import cn.axzo.oss.manager.api.dto.request.ServerFileUploadDto;
|
||||
import cn.axzo.oss.service.api.FileService;
|
||||
@ -15,6 +15,7 @@ import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 服务端文件 Controller
|
||||
@ -47,4 +48,26 @@ public class ServerFileController implements ServerFileServiceApi {
|
||||
fileService.delete(dto);
|
||||
return CommonResponse.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取文件url
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public CommonResponse<List<FindFileUrlResponse>> getFileUrl(FindFileUrlRequest request) {
|
||||
FindFileUrlDto dto = BeanConvertUtil.copyBean(request, FindFileUrlDto.class);
|
||||
return CommonResponse.success(BeanConverter.convert(fileService.findFileUrl(dto), FindFileUrlResponse.class));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取文件key,用于历史数据清理
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public CommonResponse<List<FindFileKeyResponse>> getFileKey(FindFileKeyRequest request) {
|
||||
FindFileKeyDto dto = BeanConvertUtil.copyBean(request, FindFileKeyDto.class);
|
||||
return CommonResponse.success(BeanConverter.convert(fileService.findFileKey(dto), FindFileKeyResponse.class));
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,8 +1,12 @@
|
||||
package cn.axzo.oss.client.controller;
|
||||
|
||||
import cn.axzo.core.utils.converter.BeanConverter;
|
||||
import cn.axzo.oss.client.vo.FindFileUrlVo;
|
||||
import cn.axzo.oss.client.vo.WebFileUploadVo;
|
||||
import cn.axzo.oss.common.utils.BeanConvertUtil;
|
||||
import cn.axzo.oss.manager.api.dto.request.FindFileUrlDto;
|
||||
import cn.axzo.oss.manager.api.dto.request.ServerFileUploadDto;
|
||||
import cn.axzo.oss.manager.api.dto.response.FindFileUrlResponse;
|
||||
import cn.axzo.oss.manager.api.dto.response.ServerFileUploadResponse;
|
||||
import cn.axzo.oss.service.api.FileService;
|
||||
import cn.azxo.framework.common.model.CommonResponse;
|
||||
@ -12,6 +16,7 @@ import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.validation.Valid;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 前端文件controller
|
||||
@ -42,4 +47,16 @@ public class WebFileController {
|
||||
return CommonResponse.success(result);
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
@PostMapping("/v1/file/getUrl")
|
||||
@CrossOrigin
|
||||
public CommonResponse<List<FindFileUrlVo>> getUrl(@Valid @RequestParam String appCode,
|
||||
@Valid @RequestParam List<String> fileKey) {
|
||||
FindFileUrlDto dto = FindFileUrlDto.builder()
|
||||
.appCode(appCode)
|
||||
.fileKey(fileKey)
|
||||
.build();
|
||||
List<FindFileUrlResponse> response = fileService.findFileUrl(dto);
|
||||
return CommonResponse.success(BeanConverter.convert(response, FindFileUrlVo.class));
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,21 @@
|
||||
package cn.axzo.oss.client.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @Author: liyong.tian
|
||||
* @Date: 2022/11/16 19:41
|
||||
* @Description: 前端获取文件url返回实体
|
||||
*/
|
||||
@Data
|
||||
public class FindFileUrlVo {
|
||||
|
||||
/**
|
||||
* 文件 URL
|
||||
*/
|
||||
private String url;
|
||||
/**
|
||||
* 文件 Key
|
||||
*/
|
||||
private String fileKey;
|
||||
}
|
||||
@ -3,6 +3,8 @@ package cn.axzo.oss.dal.repository;
|
||||
import cn.axzo.oss.dal.entity.File;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 文件上传记录 服务类
|
||||
@ -20,4 +22,8 @@ public interface FileDao extends IService<File> {
|
||||
* @return
|
||||
*/
|
||||
File getByAppCodeAndUrlMd5(String appCode, String urlMd5);
|
||||
|
||||
List<File> getByAppCodeAndFileUuids(String appCode, List<String> fileKey);
|
||||
|
||||
List<File> getByAppCodeAndUrlMd5s(String appCode, List<String> urlMd5List);
|
||||
}
|
||||
|
||||
@ -8,6 +8,8 @@ import cn.axzo.oss.dal.repository.FileDao;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 文件上传记录 Dao实现类
|
||||
@ -25,4 +27,22 @@ public class FileDaoImpl extends ServiceImpl<FileMapper, File> implements FileDa
|
||||
.eq(File::getStatus, FileStatus.SUCCESS).eq(File::getIsDelete, TableDelete.UN_DELETED)
|
||||
.last("limit 1").one();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<File> getByAppCodeAndFileUuids(String appCode, List<String> fileKey) {
|
||||
return lambdaQuery().eq(File::getAppCode, appCode)
|
||||
.in(File::getFileUuid, fileKey)
|
||||
.eq(File::getStatus, FileStatus.SUCCESS)
|
||||
.eq(File::getIsDelete, TableDelete.UN_DELETED)
|
||||
.list();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<File> getByAppCodeAndUrlMd5s(String appCode, List<String> urlMd5List) {
|
||||
return lambdaQuery().eq(File::getAppCode, appCode)
|
||||
.in(File::getUrlMd5, urlMd5List)
|
||||
.eq(File::getStatus, FileStatus.SUCCESS)
|
||||
.eq(File::getIsDelete, TableDelete.UN_DELETED)
|
||||
.list();
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,13 +1,13 @@
|
||||
package cn.axzo.oss.http.api;
|
||||
|
||||
import cn.axzo.oss.http.model.ServerFileDeleteRequest;
|
||||
import cn.axzo.oss.http.model.ServerFileUploadRequest;
|
||||
import cn.axzo.oss.http.model.ServerFileUploadResponse;
|
||||
import cn.axzo.oss.http.model.*;
|
||||
import cn.azxo.framework.common.model.CommonResponse;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 服务端 OSS 服务
|
||||
*
|
||||
@ -37,4 +37,16 @@ public interface ServerFileServiceApi {
|
||||
@RequestMapping(value = "/api/v1/server/delete", method = RequestMethod.POST)
|
||||
CommonResponse delete(ServerFileDeleteRequest request);
|
||||
|
||||
/**
|
||||
* 获取文件URL
|
||||
*/
|
||||
@RequestMapping(value = "api/v1/server/getUrl", method = RequestMethod.POST)
|
||||
CommonResponse<List<FindFileUrlResponse>> getFileUrl(FindFileUrlRequest request);
|
||||
|
||||
/**
|
||||
* 获取文件key
|
||||
* 用于历史数据清理
|
||||
*/
|
||||
@RequestMapping(value = "api/v1/server/getFileKey", method = RequestMethod.POST)
|
||||
CommonResponse<List<FindFileKeyResponse>> getFileKey(FindFileKeyRequest request);
|
||||
}
|
||||
|
||||
@ -0,0 +1,22 @@
|
||||
package cn.axzo.oss.http.model;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author: liyong.tian
|
||||
* @Date: 2022/11/16 17:39
|
||||
* @Description: 服务端获取文件key请求类
|
||||
*/
|
||||
@Data
|
||||
public class FindFileKeyRequest {
|
||||
|
||||
@NotBlank(message = "appCode must not be null")
|
||||
private String appCode;
|
||||
|
||||
@NotNull(message = "url must not be null")
|
||||
private List<String> url;
|
||||
}
|
||||
@ -0,0 +1,22 @@
|
||||
package cn.axzo.oss.http.model;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @Author: liyong.tian
|
||||
* @Date: 2022/11/16 18:21
|
||||
* @Description: 服务端获取文件key响应类
|
||||
*/
|
||||
@Data
|
||||
public class FindFileKeyResponse {
|
||||
|
||||
/**
|
||||
* 文件 URL
|
||||
*/
|
||||
private String url;
|
||||
|
||||
/**
|
||||
* 文件 Key
|
||||
*/
|
||||
private String fileKey;
|
||||
}
|
||||
@ -0,0 +1,20 @@
|
||||
package cn.axzo.oss.http.model;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
/**
|
||||
* @Author: liyong.tian
|
||||
* @Date: 2022/11/16 17:33
|
||||
* @Description: 服务端获取文件url请求类
|
||||
*/
|
||||
@Data
|
||||
public class FindFileUrlRequest {
|
||||
|
||||
@NotBlank(message = "appCode must not be null")
|
||||
private String appCode;
|
||||
|
||||
@NotBlank(message = "fileKey must not be null")
|
||||
private String fileKey;
|
||||
}
|
||||
@ -0,0 +1,21 @@
|
||||
package cn.axzo.oss.http.model;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @Author: liyong.tian
|
||||
* @Date: 2022/11/16 18:21
|
||||
* @Description: 服务端获取文件url响应类
|
||||
*/
|
||||
@Data
|
||||
public class FindFileUrlResponse {
|
||||
|
||||
/**
|
||||
* 文件 URL
|
||||
*/
|
||||
private String url;
|
||||
/**
|
||||
* 文件 Key
|
||||
*/
|
||||
private String fileKey;
|
||||
}
|
||||
@ -0,0 +1,26 @@
|
||||
package cn.axzo.oss.manager.api.dto.request;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author: liyong.tian
|
||||
* @Date: 2022/11/16 17:39
|
||||
* @Description: 服务端获取文件key请求类
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
public class FindFileKeyDto {
|
||||
|
||||
/**
|
||||
* 应用码
|
||||
*/
|
||||
private String appCode;
|
||||
|
||||
/**
|
||||
* 文件url
|
||||
*/
|
||||
private List<String> url;
|
||||
}
|
||||
@ -0,0 +1,26 @@
|
||||
package cn.axzo.oss.manager.api.dto.request;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author: liyong.tian
|
||||
* @Date: 2022/11/16 17:33
|
||||
* @Description: 服务端获取文件url请求类
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
public class FindFileUrlDto {
|
||||
|
||||
/**
|
||||
* 应用码
|
||||
*/
|
||||
private String appCode;
|
||||
|
||||
/**
|
||||
* 文件uuid
|
||||
*/
|
||||
private List<String> fileKey;
|
||||
}
|
||||
@ -0,0 +1,22 @@
|
||||
package cn.axzo.oss.manager.api.dto.response;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @Author: liyong.tian
|
||||
* @Date: 2022/11/16 18:21
|
||||
* @Description: 服务端获取文件key响应类
|
||||
*/
|
||||
@Data
|
||||
public class FindFileKeyResponse {
|
||||
|
||||
/**
|
||||
* 文件 URL
|
||||
*/
|
||||
private String url;
|
||||
|
||||
/**
|
||||
* 文件 Key
|
||||
*/
|
||||
private String fileKey;
|
||||
}
|
||||
@ -0,0 +1,21 @@
|
||||
package cn.axzo.oss.manager.api.dto.response;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @Author: liyong.tian
|
||||
* @Date: 2022/11/16 18:21
|
||||
* @Description: 服务端获取文件url响应类
|
||||
*/
|
||||
@Data
|
||||
public class FindFileUrlResponse {
|
||||
|
||||
/**
|
||||
* 文件 URL
|
||||
*/
|
||||
private String url;
|
||||
/**
|
||||
* 文件 Key
|
||||
*/
|
||||
private String fileKey;
|
||||
}
|
||||
@ -1,9 +1,15 @@
|
||||
package cn.axzo.oss.service.api;
|
||||
|
||||
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.ServerFileDeleteDto;
|
||||
import cn.axzo.oss.manager.api.dto.request.ServerFileUploadDto;
|
||||
import cn.axzo.oss.manager.api.dto.response.FindFileKeyResponse;
|
||||
import cn.axzo.oss.manager.api.dto.response.FindFileUrlResponse;
|
||||
import cn.axzo.oss.manager.api.dto.response.ServerFileUploadResponse;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author admin
|
||||
* @Description
|
||||
@ -25,4 +31,8 @@ public interface FileService {
|
||||
* @param request
|
||||
*/
|
||||
ServerFileUploadResponse upload(ServerFileUploadDto request);
|
||||
|
||||
List<FindFileUrlResponse> findFileUrl(FindFileUrlDto dto);
|
||||
|
||||
List<FindFileKeyResponse> findFileKey(FindFileKeyDto dto);
|
||||
}
|
||||
|
||||
@ -9,26 +9,31 @@ import cn.axzo.oss.common.enums.FileStatusEnum;
|
||||
import cn.axzo.oss.common.exception.BizException;
|
||||
import cn.axzo.oss.common.utils.JsonUtil;
|
||||
import cn.axzo.oss.common.utils.Utility;
|
||||
import cn.axzo.oss.dal.entity.AppChannelBucket;
|
||||
import cn.axzo.oss.dal.entity.File;
|
||||
import cn.axzo.oss.dal.entity.FileApp;
|
||||
import cn.axzo.oss.dal.entity.FileBusinessScene;
|
||||
import cn.axzo.oss.dal.entity.FileUploadConfig;
|
||||
import cn.axzo.oss.dal.entity.*;
|
||||
import cn.axzo.oss.dal.repository.FileAppDao;
|
||||
import cn.axzo.oss.dal.repository.FileDao;
|
||||
import cn.axzo.oss.manager.api.AppChannelBucketManager;
|
||||
import cn.axzo.oss.manager.api.FileBusinessSceneManager;
|
||||
import cn.axzo.oss.manager.api.FileManager;
|
||||
import cn.axzo.oss.manager.api.FileUploadConfigManager;
|
||||
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.ServerFileDeleteDto;
|
||||
import cn.axzo.oss.manager.api.dto.request.ServerFileUploadDto;
|
||||
import cn.axzo.oss.manager.api.dto.response.FindFileKeyResponse;
|
||||
import cn.axzo.oss.manager.api.dto.response.FindFileUrlResponse;
|
||||
import cn.axzo.oss.manager.api.dto.response.ServerFileUploadResponse;
|
||||
import cn.axzo.oss.service.api.FileService;
|
||||
import java.util.Arrays;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author admin
|
||||
* @Description
|
||||
@ -130,6 +135,60 @@ public class FileServiceImpl implements FileService {
|
||||
return setResponse(ossFile);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<FindFileUrlResponse> findFileUrl(FindFileUrlDto dto) {
|
||||
log.info("find file url dto = {}", JsonUtil.obj2Str(dto));
|
||||
// 检查app code
|
||||
checkAppCode(dto.getAppCode());
|
||||
|
||||
List<File> fileList = fileDao.getByAppCodeAndFileUuids(dto.getAppCode(), dto.getFileKey());
|
||||
if (CollectionUtil.isEmpty(fileList)) {
|
||||
log.warn("find file url is null,key = {}", Arrays.toString(dto.getFileKey().toArray()));
|
||||
return new ArrayList<>();
|
||||
}
|
||||
return setFileUrlRes(fileList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<FindFileKeyResponse> findFileKey(FindFileKeyDto dto) {
|
||||
log.info("find file key dto = {}", JsonUtil.obj2Str(dto));
|
||||
// 检查app code
|
||||
checkAppCode(dto.getAppCode());
|
||||
|
||||
List<String> urlMd5List = dto.getUrl().stream()
|
||||
.map(url -> Utility.getMd5(url))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
List<File> fileList = fileDao.getByAppCodeAndUrlMd5s(dto.getAppCode(), urlMd5List);
|
||||
if (CollectionUtil.isEmpty(fileList)) {
|
||||
log.warn("find file key is null,url = {}", Arrays.toString(dto.getUrl().toArray()));
|
||||
return new ArrayList<>();
|
||||
}
|
||||
return setFileKeyRes(fileList);
|
||||
}
|
||||
|
||||
private List<FindFileUrlResponse> setFileUrlRes(List<File> fileList) {
|
||||
List<FindFileUrlResponse> resList = new ArrayList<>();
|
||||
fileList.forEach(file -> {
|
||||
FindFileUrlResponse response = new FindFileUrlResponse();
|
||||
response.setUrl(file.getFileUrl());
|
||||
response.setFileKey(file.getFileUuid());
|
||||
resList.add(response);
|
||||
});
|
||||
return resList;
|
||||
}
|
||||
|
||||
private List<FindFileKeyResponse> setFileKeyRes(List<File> fileList) {
|
||||
List<FindFileKeyResponse> resList = new ArrayList<>();
|
||||
fileList.forEach(file -> {
|
||||
FindFileKeyResponse response = new FindFileKeyResponse();
|
||||
response.setUrl(file.getFileUrl());
|
||||
response.setFileKey(file.getFileUuid());
|
||||
resList.add(response);
|
||||
});
|
||||
return resList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断文件是否符合要求
|
||||
*/
|
||||
@ -194,7 +253,7 @@ public class FileServiceImpl implements FileService {
|
||||
return ossFile;
|
||||
}
|
||||
|
||||
private ServerFileUploadResponse setResponse(File ossFile){
|
||||
private ServerFileUploadResponse setResponse(File ossFile) {
|
||||
ServerFileUploadResponse response = new ServerFileUploadResponse();
|
||||
response.setUrl(ossFile.getFileUrl());
|
||||
response.setUrlMd5(ossFile.getUrlMd5());
|
||||
|
||||
Loading…
Reference in New Issue
Block a user