DocFileController.java 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. package com.goldenwater.web.controller.efinder;
  2. import com.goldenwater.slgc.entity.efinder.DocFile;
  3. import com.goldenwater.slgc.service.efinder.IDocFileService;
  4. import com.goldenwater.common.core.controller.BaseController;
  5. import com.goldenwater.common.core.domain.AjaxResult;
  6. import com.goldenwater.common.core.page.TableDataInfo;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.web.bind.annotation.*;
  9. import com.goldenwater.common.annotation.Log;
  10. import com.goldenwater.common.enums.BusinessType;
  11. import org.springframework.validation.annotation.Validated;
  12. import io.swagger.v3.oas.annotations.Operation;
  13. import io.swagger.v3.oas.annotations.Parameter;
  14. import io.swagger.v3.oas.annotations.tags.Tag;
  15. import jakarta.servlet.http.HttpServletResponse;
  16. import java.util.List;
  17. import java.util.Map;
  18. @Tag(name = "01.02 文件管理-文件", description = "文件管理相关接口")
  19. @RestController
  20. @Validated
  21. @RequestMapping("/efinder/file")
  22. public class DocFileController extends BaseController {
  23. @Autowired
  24. private IDocFileService docFileService;
  25. /**
  26. * 查询文件列表
  27. */
  28. @Operation(summary = "查询文件列表")
  29. @GetMapping("/list")
  30. public TableDataInfo list(@Parameter(description = "文件查询条件") DocFile docFile) {
  31. startPage();
  32. List<DocFile> list = docFileService.selectList(docFile);
  33. return getDataTable(list);
  34. }
  35. /**
  36. * 获取文件详细信息
  37. */
  38. @Operation(summary = "获取文件详细信息")
  39. @GetMapping("/{id}")
  40. public AjaxResult getInfo(@Parameter(description = "文件ID") @PathVariable Long id) {
  41. return success(docFileService.selectById(id));
  42. }
  43. /**
  44. * 下载文件
  45. */
  46. @Operation(summary = "下载文件")
  47. @GetMapping("/download/{id}")
  48. public void download(@Parameter(description = "文件ID") @PathVariable Long id, HttpServletResponse response) {
  49. docFileService.download(id, response);
  50. }
  51. /**
  52. * 预览文件
  53. */
  54. @Operation(summary = "预览文件")
  55. @GetMapping("/preview/{id}")
  56. public void preview(@Parameter(description = "文件ID") @PathVariable Long id, HttpServletResponse response) {
  57. docFileService.download(id, response);
  58. }
  59. /**
  60. * 新增文件
  61. */
  62. @Operation(summary = "新增文件")
  63. @Log(title = "文件管理", businessType = BusinessType.INSERT)
  64. @PostMapping
  65. public AjaxResult add(@Parameter(description = "文件信息") @RequestBody DocFile docFile) {
  66. return toAjax(docFileService.insert(docFile));
  67. }
  68. /**
  69. * 上传文件
  70. */
  71. @Operation(summary = "上传文件")
  72. @PostMapping("/upload")
  73. public AjaxResult upload(@Parameter(description = "上传的文件") @RequestParam("file") org.springframework.web.multipart.MultipartFile file,
  74. @Parameter(description = "父级文件夹ID") @RequestParam(required = false) Long pid) {
  75. return success(docFileService.upload(file, pid));
  76. }
  77. /**
  78. * 修改文件
  79. */
  80. @Operation(summary = "修改文件")
  81. @Log(title = "文件管理", businessType = BusinessType.UPDATE)
  82. @PutMapping
  83. public AjaxResult edit(@Parameter(description = "文件信息") @RequestBody DocFile docFile) {
  84. return toAjax(docFileService.update(docFile));
  85. }
  86. /**
  87. * 重命名文件
  88. */
  89. @Operation(summary = "重命名文件")
  90. @Log(title = "文件管理", businessType = BusinessType.UPDATE)
  91. @PutMapping("/rename")
  92. public AjaxResult rename(@Parameter(description = "文件信息") @RequestBody DocFile docFile) {
  93. return toAjax(docFileService.update(docFile));
  94. }
  95. /**
  96. * 移动文件
  97. */
  98. @Operation(summary = "移动文件")
  99. @Log(title = "文件管理", businessType = BusinessType.UPDATE)
  100. @PutMapping("/move")
  101. public AjaxResult move(@Parameter(description = "文件信息") @RequestBody DocFile docFile) {
  102. return toAjax(docFileService.update(docFile));
  103. }
  104. /**
  105. * 删除文件
  106. */
  107. @Operation(summary = "删除文件")
  108. @Log(title = "文件管理", businessType = BusinessType.DELETE)
  109. @DeleteMapping("/{ids}")
  110. public AjaxResult remove(@Parameter(description = "文件ID数组") @PathVariable Long[] ids) {
  111. return toAjax(docFileService.deleteByIds(ids));
  112. }
  113. /**
  114. * 查看文本文件内容
  115. */
  116. @Operation(summary = "查看文本文件内容")
  117. @GetMapping("/txt/view")
  118. public AjaxResult txtView(@Parameter(description = "文件ID") @RequestParam Long id,
  119. @Parameter(description = "字符编码") @RequestParam(required = false, defaultValue = "UTF-8") String charset) {
  120. return success(docFileService.readTextContent(id, charset));
  121. }
  122. /**
  123. * 获取ZIP文件条目列表
  124. */
  125. @Operation(summary = "获取ZIP文件条目列表")
  126. @GetMapping("/zip/itemlist")
  127. public AjaxResult zipItemList(@Parameter(description = "文件ID") @RequestParam Long id) {
  128. return success(docFileService.listZipEntries(id));
  129. }
  130. /**
  131. * 下载ZIP文件中的单个文件
  132. */
  133. @Operation(summary = "下载ZIP文件中的单个文件")
  134. @GetMapping("/zip/download")
  135. public void zipDownload(@Parameter(description = "文件ID") @RequestParam Long id,
  136. @Parameter(description = "ZIP内条目路径") @RequestParam String entryPath,
  137. HttpServletResponse response) {
  138. docFileService.downloadZipEntry(id, entryPath, response);
  139. }
  140. /**
  141. * 流式播放媒体文件
  142. */
  143. @Operation(summary = "流式播放媒体文件")
  144. @GetMapping("/media/{id}")
  145. public void media(@Parameter(description = "文件ID") @PathVariable Long id, HttpServletResponse response) {
  146. docFileService.streamMedia(id, response);
  147. }
  148. }