package com.qianwen.smartman.modules.resource.endpoint;
|
|
import cn.hutool.core.date.DatePattern;
|
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.io.IoUtil;
|
import io.swagger.annotations.Api;
|
import me.zhyd.oauth.log.Log;
|
|
import java.io.IOException;
|
import java.io.InputStream;
|
import javax.servlet.http.HttpServletResponse;
|
import org.apache.commons.lang.time.DateUtils;
|
import com.qianwen.core.log.exception.ServiceException;
|
import com.qianwen.core.oss.model.BladeFile;
|
import com.qianwen.core.oss.model.OssFile;
|
import com.qianwen.core.scanner.modular.annotation.GetResource;
|
import com.qianwen.core.scanner.modular.annotation.PostResource;
|
import com.qianwen.core.scanner.modular.stereotype.ApiResource;
|
import com.qianwen.core.tenant.annotation.NonDS;
|
import com.qianwen.core.tool.api.R;
|
import com.qianwen.core.tool.utils.FileUtil;
|
import com.qianwen.core.tool.utils.Func;
|
import com.qianwen.smartman.modules.resource.builder.oss.OssBuilder;
|
import com.qianwen.smartman.modules.resource.entity.Attach;
|
import com.qianwen.smartman.modules.resource.service.IAttachService;
|
import com.qianwen.smartman.modules.resource.vo.OssFileVO;
|
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.multipart.MultipartFile;
|
|
@Api(value = "对象存储端点", tags = {"对象存储端点"})
|
@RestController
|
@ApiResource({"blade-resource/oss/endpoint"})
|
@NonDS
|
/* loaded from: blade-api.jar:BOOT-INF/classes/org/springblade/modules/resource/endpoint/OssEndpointController.class */
|
public class OssEndpointController {
|
private final OssBuilder ossBuilder;
|
private final IAttachService attachService;
|
|
public OssEndpointController(final OssBuilder ossBuilder, final IAttachService attachService) {
|
this.ossBuilder = ossBuilder;
|
this.attachService = attachService;
|
}
|
|
@PostResource({"/make-bucket"})
|
public R makeBucket(@RequestParam String bucketName) {
|
this.ossBuilder.template().makeBucket(bucketName);
|
return R.success("创建成功");
|
}
|
|
@PostResource({"/remove-bucket"})
|
public R removeBucket(@RequestParam String bucketName) {
|
this.ossBuilder.template().removeBucket(bucketName);
|
return R.success("删除成功");
|
}
|
|
@PostResource({"/copy-file"})
|
public R copyFile(@RequestParam String fileName, @RequestParam String destBucketName, String destFileName) {
|
this.ossBuilder.template().copyFile(fileName, destBucketName, destFileName);
|
return R.success("操作成功");
|
}
|
|
@GetResource({"/stat-file"})
|
public R<OssFile> statFile(@RequestParam String fileName) {
|
return R.data(this.ossBuilder.template().statFile(fileName));
|
}
|
|
@GetResource({"/file-path"})
|
public R<String> filePath(@RequestParam String fileName) {
|
return R.data(this.ossBuilder.template().filePath(fileName));
|
}
|
|
@GetResource({"/file-link"})
|
public R<String> fileLink(@RequestParam String fileName) {
|
return R.data(this.ossBuilder.template().fileLink(fileName));
|
}
|
|
@GetResource({"/file-content"})
|
public void getFileContent(@RequestParam String fileName, HttpServletResponse response) {
|
|
try (InputStream objectStream = this.ossBuilder.template().getObject(fileName)) {
|
response.setContentType("application/octet-stream; charset=UTF-8");
|
response.addHeader("Expires", "0");
|
response.addHeader("Pragma", "no-cache");
|
response.addHeader("Cache-Control", "no-cache, no-store, must-revalidate");
|
IoUtil.copy(objectStream, response.getOutputStream());
|
|
} catch (IOException e) {
|
Log.error("获取文件内容错误",e);
|
e.printStackTrace();
|
} catch (Exception e) {
|
throw new ServiceException("文件不存在");
|
}
|
|
}
|
|
@PostResource({"/put-file"})
|
public R<BladeFile> putFile(@RequestParam MultipartFile file) {
|
BladeFile bladeFile = this.ossBuilder.template().putFile(file.getOriginalFilename(), file);
|
return R.data(bladeFile);
|
}
|
|
@PostResource({"/put-file-detail"})
|
public R<OssFileVO> putFileWithDeatil(@RequestParam MultipartFile file) {
|
BladeFile bladeFile = this.ossBuilder.template().putFile(file.getOriginalFilename(), file);
|
OssFile ossFile = this.ossBuilder.template().statFile(bladeFile.getName());
|
OssFileVO ossFileVO = OssFileVO.builder().length(ossFile.getLength()).putTimeStr(DateUtil.format(DateUtils.addHours(ossFile.getPutTime(), 8), DatePattern.NORM_DATETIME_MINUTE_FORMAT)).oriFileName(bladeFile.getOriginalName()).link(bladeFile.getLink()).build();
|
return R.data(ossFileVO);
|
}
|
|
@PostResource({"/put-file-by-name"})
|
public R<BladeFile> putFileByName(@RequestParam String fileName, @RequestParam MultipartFile file) {
|
BladeFile bladeFile = this.ossBuilder.template().putFile(fileName, file);
|
return R.data(bladeFile);
|
}
|
|
@PostResource({"/put-file-attach"})
|
public R<BladeFile> putFileAttach(@RequestParam MultipartFile file) {
|
try {
|
String fileName = file.getOriginalFilename();
|
BladeFile bladeFile = this.ossBuilder.template().putFile(fileName, file.getInputStream());
|
Long attachId = buildAttach(fileName, Long.valueOf(file.getSize()), bladeFile);
|
bladeFile.setAttachId(attachId);
|
return R.data(bladeFile);
|
} catch (Throwable ex) {
|
//log.error("putFileAttachByName,异常,file={}",fileName,ex);
|
throw new ServiceException("putFileAttach异常"+ex.getMessage());
|
|
}
|
}
|
|
@PostResource({"/put-file-attach-by-name"})
|
public R<BladeFile> putFileAttachByName(@RequestParam String fileName, @RequestParam MultipartFile file) {
|
try {
|
BladeFile bladeFile = this.ossBuilder.template().putFile(fileName, file.getInputStream());
|
Long attachId = buildAttach(fileName, Long.valueOf(file.getSize()), bladeFile);
|
bladeFile.setAttachId(attachId);
|
return R.data(bladeFile);
|
} catch (Throwable ex) {
|
//log.error("putFileAttachByName,异常,file={}",fileName,ex);
|
throw new ServiceException("putFileAttachByName异常"+ex.getMessage());
|
|
}
|
}
|
|
private Long buildAttach(String fileName, Long fileSize, BladeFile bladeFile) {
|
String fileExtension = FileUtil.getFileExtension(fileName);
|
Attach attach = new Attach();
|
attach.setDomainName(bladeFile.getDomain());
|
attach.setLink(bladeFile.getLink());
|
attach.setName(bladeFile.getName());
|
attach.setOriginalName(bladeFile.getOriginalName());
|
attach.setAttachSize(fileSize);
|
attach.setExtension(fileExtension);
|
this.attachService.save(attach);
|
return attach.getId();
|
}
|
|
@PostResource({"/remove-file"})
|
public R removeFile(@RequestParam String fileName) {
|
this.ossBuilder.template().removeFile(fileName);
|
return R.success("操作成功");
|
}
|
|
@PostResource({"/remove-files"})
|
public R removeFiles(@RequestParam String fileNames) {
|
this.ossBuilder.template().removeFiles(Func.toStrList(fileNames));
|
return R.success("操作成功");
|
}
|
|
@PostResource({"/get-file-detail"})
|
public R<BladeFile> getFileDetail(@RequestParam MultipartFile file) {
|
try {
|
BladeFile bladeFile = this.ossBuilder.template().putFile(file.getName(), file.getInputStream());
|
long size = file.getSize();
|
Long attachId = buildAttach(file.getName(), Long.valueOf(size), bladeFile);
|
bladeFile.setAttachId(attachId);
|
return R.data(bladeFile);
|
} catch (Throwable ex) {
|
//log.error("putFileAttachByName,异常,file={}",fileName,ex);
|
throw new ServiceException("getFileDetail异常"+ex.getMessage());
|
|
}
|
}
|
}
|