DocumentPreviewController.java 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. package jnpf.controller;
  2. import cn.dev33.satoken.annotation.SaCheckPermission;
  3. import io.swagger.v3.oas.annotations.tags.Tag;
  4. import io.swagger.v3.oas.annotations.Parameter;
  5. import io.swagger.v3.oas.annotations.Parameters;
  6. import io.swagger.v3.oas.annotations.Operation;
  7. import jnpf.base.ActionResult;
  8. import jnpf.constant.FileTypeConstant;
  9. import jnpf.constant.MsgCode;
  10. import jnpf.entity.FileParameter;
  11. import jnpf.util.NoDataSourceBind;
  12. import jnpf.base.Page;
  13. import jnpf.config.ConfigValueUtil;
  14. import jnpf.enums.FilePreviewTypeEnum;
  15. import jnpf.exception.DataException;
  16. import jnpf.model.YozoFileParams;
  17. import jnpf.model.YozoParams;
  18. import jnpf.model.FileListVO;
  19. import jnpf.util.*;
  20. import jnpf.utils.SplicingUrlUtil;
  21. import org.springframework.beans.factory.annotation.Autowired;
  22. import org.springframework.web.bind.annotation.*;
  23. import java.util.List;
  24. import java.util.stream.Collectors;
  25. /**
  26. * 文档在线预览
  27. *
  28. * @author JNPF开发平台组
  29. * @version V3.1.0
  30. * @copyright 引迈信息技术有限公司
  31. * @date 2019年9月26日 上午9:18
  32. */
  33. @NoDataSourceBind()
  34. @Tag(name = "文档在线预览", description = "DocumentPreview")
  35. @RestController
  36. @RequestMapping("/api/extend/DocumentPreview")
  37. public class DocumentPreviewController {
  38. /**
  39. * 永中文件预览
  40. *
  41. * @param fileId 文件主键
  42. * @param params 永中模型
  43. * @param previewType 类型
  44. * @return
  45. */
  46. @Operation(summary = "文件预览")
  47. @GetMapping("/{fileId}/Preview")
  48. @Parameters({
  49. @Parameter(name = "fileId", description = "文件主键",required = true),
  50. @Parameter(name = "previewType", description = "类型"),
  51. })
  52. @SaCheckPermission("extend.documentPreview")
  53. public ActionResult filePreview(@PathVariable("fileId") String fileId, YozoFileParams params, @RequestParam("previewType") String previewType) {
  54. List<FileListVO> fileList = FileUploadUtils.getFileList(new FileParameter().setRemotePath(FileTypeConstant.DOCUMENTPREVIEW).setRecursive(true));
  55. if (fileList.isEmpty() || Integer.parseInt(fileId) >= fileList.size()) {
  56. return ActionResult.fail(MsgCode.ETD111.get());
  57. }
  58. FileListVO fileListVO = fileList.get(Integer.parseInt(fileId));
  59. String fileName = fileListVO.getFileName();
  60. if (fileName != null && fileName.contains("/")) {
  61. fileName = fileName.substring(fileName.lastIndexOf("/") + 1);
  62. }
  63. String url = YozoParams.JNPF_DOMAINS + "/api/file/Image/" + FileTypeConstant.DOCUMENTPREVIEW + "/" + fileName + "?fullfilename=" + fileName + "&s=" + UserProvider.getUser().getSecurityKey();;
  64. String urlPath;
  65. if (previewType.equals(FilePreviewTypeEnum.YOZO_ONLINE_PREVIEW.getType())){
  66. params.setUrl(url);
  67. urlPath = SplicingUrlUtil.getPreviewUrl(params);
  68. return ActionResult.success("success", XSSEscape.escape(urlPath));
  69. }
  70. return ActionResult.success("success",url);
  71. }
  72. /**
  73. * 列表
  74. *
  75. * @param page 分页模型
  76. * @return
  77. */
  78. @Operation(summary = "获取文档列表")
  79. @GetMapping
  80. @SaCheckPermission("extend.documentPreview")
  81. public ActionResult<List<FileListVO>> list(Page page) {
  82. List<FileListVO> fileList = FileUploadUtils.getFileList(new FileParameter().setRemotePath(FileTypeConstant.DOCUMENTPREVIEW).setRecursive(true));
  83. fileList.stream().forEach(t -> {
  84. if (t.getFileName() != null) {
  85. String[] split = t.getFileName().split("/");
  86. if (split.length > 0) {
  87. t.setFileName(split[split.length - 1]);
  88. }
  89. }
  90. });
  91. if (StringUtil.isNotEmpty(page.getKeyword())) {
  92. fileList = fileList.stream().filter(t -> t.getFileName().contains(page.getKeyword())).collect(Collectors.toList());
  93. }
  94. return ActionResult.success(fileList);
  95. }
  96. }