SysFileFolderController.java 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. package com.xzl.web.controller;
  2. import java.util.List;
  3. import javax.servlet.http.HttpServletResponse;
  4. import com.xzl.common.core.domain.entity.SysFileFolder;
  5. import com.xzl.common.core.domain.model.LoginUser;
  6. import com.xzl.common.utils.SecurityUtils;
  7. import com.xzl.web.service.ISysFileFolderService;
  8. import lombok.Getter;
  9. import org.springframework.security.access.prepost.PreAuthorize;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.web.bind.annotation.GetMapping;
  12. import org.springframework.web.bind.annotation.PostMapping;
  13. import org.springframework.web.bind.annotation.PutMapping;
  14. import org.springframework.web.bind.annotation.DeleteMapping;
  15. import org.springframework.web.bind.annotation.PathVariable;
  16. import org.springframework.web.bind.annotation.RequestBody;
  17. import org.springframework.web.bind.annotation.RequestMapping;
  18. import org.springframework.web.bind.annotation.RestController;
  19. import com.xzl.common.annotation.Log;
  20. import com.xzl.common.core.controller.BaseController;
  21. import com.xzl.common.core.domain.AjaxResult;
  22. import com.xzl.common.enums.BusinessType;
  23. import com.xzl.common.utils.poi.ExcelUtil;
  24. import com.xzl.common.core.page.TableDataInfo;
  25. /**
  26. * 文件文件夹(麻城知识库四级结构)Controller
  27. *
  28. * @author xzl
  29. * @date 2025-06-17
  30. */
  31. @RestController
  32. @RequestMapping("/system/folder")
  33. public class SysFileFolderController extends BaseController {
  34. @Autowired
  35. private ISysFileFolderService sysFileFolderService;
  36. /**
  37. * 查询文件文件夹(麻城知识库四级结构)列表
  38. */
  39. @PreAuthorize("@ss.hasPermi('system:user:list')")
  40. @GetMapping("/list")
  41. public TableDataInfo list(SysFileFolder sysFileFolder) {
  42. startPage();
  43. List<SysFileFolder> list = sysFileFolderService.selectSysFileFolderList(sysFileFolder);
  44. return getDataTable(list);
  45. }
  46. /**
  47. * 导出文件文件夹(麻城知识库四级结构)列表
  48. */
  49. @PreAuthorize("@ss.hasPermi('system:user:export')")
  50. @Log(title = "文件文件夹(麻城知识库四级结构)", businessType = BusinessType.EXPORT)
  51. @PostMapping("/export")
  52. public void export(HttpServletResponse response, SysFileFolder sysFileFolder) {
  53. List<SysFileFolder> list = sysFileFolderService.selectSysFileFolderList(sysFileFolder);
  54. ExcelUtil<SysFileFolder> util = new ExcelUtil<>(SysFileFolder.class);
  55. util.exportExcel(response, list, "文件文件夹(麻城知识库四级结构)数据");
  56. }
  57. /**
  58. * 获取文件文件夹(麻城知识库四级结构)详细信息
  59. */
  60. @PreAuthorize("@ss.hasPermi('system:user:query')")
  61. @GetMapping(value = "/{folderId}")
  62. public AjaxResult getInfo(@PathVariable("folderId") Long folderId) {
  63. return success(sysFileFolderService.selectSysFileFolderByFolderId(folderId));
  64. }
  65. /**
  66. * 新增文件文件夹(麻城知识库四级结构)
  67. */
  68. @PreAuthorize("@ss.hasPermi('system:user:add')")
  69. @Log(title = "文件文件夹(麻城知识库四级结构)", businessType = BusinessType.INSERT)
  70. @PostMapping
  71. public AjaxResult add(@RequestBody SysFileFolder sysFileFolder) {
  72. return toAjax(sysFileFolderService.insertSysFileFolder(sysFileFolder));
  73. }
  74. /**
  75. * 修改文件文件夹(麻城知识库四级结构)
  76. */
  77. @PreAuthorize("@ss.hasPermi('system:user:edit')")
  78. @Log(title = "文件文件夹(麻城知识库四级结构)", businessType = BusinessType.UPDATE)
  79. @PutMapping("/update")
  80. public AjaxResult edit(@RequestBody SysFileFolder sysFileFolder) {
  81. LoginUser loginUser = SecurityUtils.getLoginUser();
  82. // 检查 sysFileFolder.getDeptId() 是否为 null
  83. if (loginUser.getUserId().equals(1L) ||
  84. (sysFileFolder.getCreateBy().equals(loginUser.getUser().getNickName()))) {
  85. return toAjax(sysFileFolderService.updateSysFileFolder(sysFileFolder));
  86. }
  87. return error("只有超级管理员或创建者可以修改");
  88. }
  89. /**
  90. * 删除文件文件夹(麻城知识库四级结构)
  91. */
  92. @PreAuthorize("@ss.hasPermi('system:user:remove')")
  93. @Log(title = "文件文件夹(麻城知识库四级结构)", businessType = BusinessType.DELETE)
  94. @DeleteMapping("/batchRemove/{folderIds}")
  95. public AjaxResult remove(@PathVariable Long[] folderIds) {
  96. return toAjax(sysFileFolderService.deleteSysFileFolderByFolderIds(folderIds));
  97. }
  98. /**
  99. * 获取部门树列表
  100. */
  101. @PreAuthorize("@ss.hasPermi('system:user:query')")
  102. @GetMapping("/folderTree")
  103. public AjaxResult folderTree(SysFileFolder sysFileFolder) {
  104. logger.info("返回的文件夹树数据: {}", sysFileFolderService.selectSysFileFolderTree(sysFileFolder).toString());
  105. return success(sysFileFolderService.selectSysFileFolderTree(sysFileFolder));
  106. }
  107. /**
  108. * 检查文件文件夹是否可以删除(是否包含子文件夹或文件)
  109. */
  110. @PreAuthorize("@ss.hasPermi('system:user:remove')")
  111. @GetMapping("/checkDeletable/{folderId}")
  112. public AjaxResult checkDeletable(@PathVariable Long folderId) {
  113. LoginUser loginUser = SecurityUtils.getLoginUser();
  114. // 判断是否包含子文件夹或文件
  115. boolean hasChildren = sysFileFolderService.hasChildren(folderId);
  116. int fileCount = sysFileFolderService.getFileCountByFolderId(folderId);
  117. if (loginUser.getUserId().equals(1L)
  118. || loginUser.getUser().getNickName()
  119. .equals(sysFileFolderService.selectSysFileFolderByFolderId(folderId).getCreateBy())) {
  120. return success(new CheckResult(hasChildren, fileCount));
  121. }
  122. return error("只有超级管理员或创建者可以删除");
  123. }
  124. // 内部类用于封装返回结果
  125. @Getter
  126. private static class CheckResult {
  127. private final boolean hasChildren;
  128. private final int fileCount;
  129. public CheckResult(boolean hasChildren, int fileCount) {
  130. this.hasChildren = hasChildren;
  131. this.fileCount = fileCount;
  132. }
  133. }
  134. // ... existing code ...
  135. /**
  136. * 删除指定文件夹下的所有文件(软删除)
  137. */
  138. @PreAuthorize("@ss.hasPermi('system:user:remove')")
  139. @Log(title = "文件操作", businessType = BusinessType.DELETE)
  140. @DeleteMapping("/{folderId}")
  141. public AjaxResult deleteFilesByFolderId(@PathVariable Long folderId) {
  142. return success(sysFileFolderService.deleteFilesByFolderId(folderId));
  143. }
  144. /**
  145. * 获取部门树列表(部门管理员)
  146. */
  147. @PreAuthorize("@ss.hasPermi('system:user:query')")
  148. @GetMapping()
  149. public AjaxResult folderTreeSelectByDeptId(SysFileFolder sysFileFolder) {
  150. LoginUser loginUser = SecurityUtils.getLoginUser();
  151. if (loginUser.getUserId().equals(1L)) {
  152. return success(sysFileFolderService.selectSysFileFolderTree(sysFileFolder));
  153. }
  154. return success(sysFileFolderService.selectSysFileFolderTreeByDeptId(loginUser.getDeptId(), sysFileFolder));
  155. }
  156. }