package com.xzl.web.controller; import java.util.List; import javax.servlet.http.HttpServletResponse; import com.xzl.common.core.domain.entity.SysFileFolder; import com.xzl.common.core.domain.model.LoginUser; import com.xzl.common.utils.SecurityUtils; import com.xzl.web.service.ISysFileFolderService; import lombok.Getter; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.xzl.common.annotation.Log; import com.xzl.common.core.controller.BaseController; import com.xzl.common.core.domain.AjaxResult; import com.xzl.common.enums.BusinessType; import com.xzl.common.utils.poi.ExcelUtil; import com.xzl.common.core.page.TableDataInfo; /** * 文件文件夹(麻城知识库四级结构)Controller * * @author xzl * @date 2025-06-17 */ @RestController @RequestMapping("/system/folder") public class SysFileFolderController extends BaseController { @Autowired private ISysFileFolderService sysFileFolderService; /** * 查询文件文件夹(麻城知识库四级结构)列表 */ @PreAuthorize("@ss.hasPermi('system:user:list')") @GetMapping("/list") public TableDataInfo list(SysFileFolder sysFileFolder) { startPage(); List list = sysFileFolderService.selectSysFileFolderList(sysFileFolder); return getDataTable(list); } /** * 导出文件文件夹(麻城知识库四级结构)列表 */ @PreAuthorize("@ss.hasPermi('system:user:export')") @Log(title = "文件文件夹(麻城知识库四级结构)", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, SysFileFolder sysFileFolder) { List list = sysFileFolderService.selectSysFileFolderList(sysFileFolder); ExcelUtil util = new ExcelUtil<>(SysFileFolder.class); util.exportExcel(response, list, "文件文件夹(麻城知识库四级结构)数据"); } /** * 获取文件文件夹(麻城知识库四级结构)详细信息 */ @PreAuthorize("@ss.hasPermi('system:user:query')") @GetMapping(value = "/{folderId}") public AjaxResult getInfo(@PathVariable("folderId") Long folderId) { return success(sysFileFolderService.selectSysFileFolderByFolderId(folderId)); } /** * 新增文件文件夹(麻城知识库四级结构) */ @PreAuthorize("@ss.hasPermi('system:user:add')") @Log(title = "文件文件夹(麻城知识库四级结构)", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody SysFileFolder sysFileFolder) { return toAjax(sysFileFolderService.insertSysFileFolder(sysFileFolder)); } /** * 修改文件文件夹(麻城知识库四级结构) */ @PreAuthorize("@ss.hasPermi('system:user:edit')") @Log(title = "文件文件夹(麻城知识库四级结构)", businessType = BusinessType.UPDATE) @PutMapping("/update") public AjaxResult edit(@RequestBody SysFileFolder sysFileFolder) { LoginUser loginUser = SecurityUtils.getLoginUser(); // 检查 sysFileFolder.getDeptId() 是否为 null if (loginUser.getUserId().equals(1L) || (sysFileFolder.getCreateBy().equals(loginUser.getUser().getNickName()))) { return toAjax(sysFileFolderService.updateSysFileFolder(sysFileFolder)); } return error("只有超级管理员或创建者可以修改"); } /** * 删除文件文件夹(麻城知识库四级结构) */ @PreAuthorize("@ss.hasPermi('system:user:remove')") @Log(title = "文件文件夹(麻城知识库四级结构)", businessType = BusinessType.DELETE) @DeleteMapping("/batchRemove/{folderIds}") public AjaxResult remove(@PathVariable Long[] folderIds) { return toAjax(sysFileFolderService.deleteSysFileFolderByFolderIds(folderIds)); } /** * 获取部门树列表 */ @PreAuthorize("@ss.hasPermi('system:user:query')") @GetMapping("/folderTree") public AjaxResult folderTree(SysFileFolder sysFileFolder) { logger.info("返回的文件夹树数据: {}", sysFileFolderService.selectSysFileFolderTree(sysFileFolder).toString()); return success(sysFileFolderService.selectSysFileFolderTree(sysFileFolder)); } /** * 检查文件文件夹是否可以删除(是否包含子文件夹或文件) */ @PreAuthorize("@ss.hasPermi('system:user:remove')") @GetMapping("/checkDeletable/{folderId}") public AjaxResult checkDeletable(@PathVariable Long folderId) { LoginUser loginUser = SecurityUtils.getLoginUser(); // 判断是否包含子文件夹或文件 boolean hasChildren = sysFileFolderService.hasChildren(folderId); int fileCount = sysFileFolderService.getFileCountByFolderId(folderId); if (loginUser.getUserId().equals(1L) || loginUser.getUser().getNickName() .equals(sysFileFolderService.selectSysFileFolderByFolderId(folderId).getCreateBy())) { return success(new CheckResult(hasChildren, fileCount)); } return error("只有超级管理员或创建者可以删除"); } // 内部类用于封装返回结果 @Getter private static class CheckResult { private final boolean hasChildren; private final int fileCount; public CheckResult(boolean hasChildren, int fileCount) { this.hasChildren = hasChildren; this.fileCount = fileCount; } } // ... existing code ... /** * 删除指定文件夹下的所有文件(软删除) */ @PreAuthorize("@ss.hasPermi('system:user:remove')") @Log(title = "文件操作", businessType = BusinessType.DELETE) @DeleteMapping("/{folderId}") public AjaxResult deleteFilesByFolderId(@PathVariable Long folderId) { return success(sysFileFolderService.deleteFilesByFolderId(folderId)); } /** * 获取部门树列表(部门管理员) */ @PreAuthorize("@ss.hasPermi('system:user:query')") @GetMapping() public AjaxResult folderTreeSelectByDeptId(SysFileFolder sysFileFolder) { LoginUser loginUser = SecurityUtils.getLoginUser(); if (loginUser.getUserId().equals(1L)) { return success(sysFileFolderService.selectSysFileFolderTree(sysFileFolder)); } return success(sysFileFolderService.selectSysFileFolderTreeByDeptId(loginUser.getDeptId(), sysFileFolder)); } }