Lijiahao před 1 týdnem
rodič
revize
428dd9e950

+ 18 - 20
xzl-admin/src/main/java/com/xzl/web/controller/SysFileFolderController.java

@@ -31,8 +31,7 @@ import com.xzl.common.core.page.TableDataInfo;
  */
 @RestController
 @RequestMapping("/system/folder")
-public class SysFileFolderController extends BaseController
-{
+public class SysFileFolderController extends BaseController {
     @Autowired
     private ISysFileFolderService sysFileFolderService;
 
@@ -41,8 +40,7 @@ public class SysFileFolderController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('system:folder:list')")
     @GetMapping("/list")
-    public TableDataInfo list(SysFileFolder sysFileFolder)
-    {
+    public TableDataInfo list(SysFileFolder sysFileFolder) {
         startPage();
         List<SysFileFolder> list = sysFileFolderService.selectSysFileFolderList(sysFileFolder);
         return getDataTable(list);
@@ -54,8 +52,7 @@ public class SysFileFolderController extends BaseController
     @PreAuthorize("@ss.hasPermi('system:folder:export')")
     @Log(title = "文件文件夹(麻城知识库四级结构)", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
-    public void export(HttpServletResponse response, SysFileFolder sysFileFolder)
-    {
+    public void export(HttpServletResponse response, SysFileFolder sysFileFolder) {
         List<SysFileFolder> list = sysFileFolderService.selectSysFileFolderList(sysFileFolder);
         ExcelUtil<SysFileFolder> util = new ExcelUtil<>(SysFileFolder.class);
         util.exportExcel(response, list, "文件文件夹(麻城知识库四级结构)数据");
@@ -66,8 +63,7 @@ public class SysFileFolderController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('system:folder:query')")
     @GetMapping(value = "/{folderId}")
-    public AjaxResult getInfo(@PathVariable("folderId") Long folderId)
-    {
+    public AjaxResult getInfo(@PathVariable("folderId") Long folderId) {
         return success(sysFileFolderService.selectSysFileFolderByFolderId(folderId));
     }
 
@@ -77,8 +73,7 @@ public class SysFileFolderController extends BaseController
     @PreAuthorize("@ss.hasPermi('system:folder:add')")
     @Log(title = "文件文件夹(麻城知识库四级结构)", businessType = BusinessType.INSERT)
     @PostMapping
-    public AjaxResult add(@RequestBody SysFileFolder sysFileFolder)
-    {
+    public AjaxResult add(@RequestBody SysFileFolder sysFileFolder) {
         return toAjax(sysFileFolderService.insertSysFileFolder(sysFileFolder));
     }
 
@@ -88,8 +83,7 @@ public class SysFileFolderController extends BaseController
     @PreAuthorize("@ss.hasPermi('system:folder:edit')")
     @Log(title = "文件文件夹(麻城知识库四级结构)", businessType = BusinessType.UPDATE)
     @PutMapping
-    public AjaxResult edit(@RequestBody SysFileFolder sysFileFolder)
-    {
+    public AjaxResult edit(@RequestBody SysFileFolder sysFileFolder) {
         return toAjax(sysFileFolderService.updateSysFileFolder(sysFileFolder));
     }
 
@@ -98,9 +92,8 @@ public class SysFileFolderController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('system:folder:remove')")
     @Log(title = "文件文件夹(麻城知识库四级结构)", businessType = BusinessType.DELETE)
-	@DeleteMapping("/batchRemove/{folderIds}")
-    public AjaxResult remove(@PathVariable Long[] folderIds)
-    {
+    @DeleteMapping("/batchRemove/{folderIds}")
+    public AjaxResult remove(@PathVariable Long[] folderIds) {
         return toAjax(sysFileFolderService.deleteSysFileFolderByFolderIds(folderIds));
     }
 
@@ -110,9 +103,8 @@ public class SysFileFolderController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('system:folder:query')")
     @GetMapping("/folderTree")
-    public AjaxResult folderTree(SysFileFolder sysFileFolder)
-    {
-        logger.info("返回的文件夹树数据: {}",sysFileFolderService.selectSysFileFolderTree(sysFileFolder).toString());
+    public AjaxResult folderTree(SysFileFolder sysFileFolder) {
+        logger.info("返回的文件夹树数据: {}", sysFileFolderService.selectSysFileFolderTree(sysFileFolder).toString());
         return success(sysFileFolderService.selectSysFileFolderTree(sysFileFolder));
     }
 
@@ -122,8 +114,7 @@ public class SysFileFolderController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('system:folder:remove')")
     @GetMapping("/checkDeletable/{folderId}")
-    public AjaxResult checkDeletable(@PathVariable Long folderId)
-    {
+    public AjaxResult checkDeletable(@PathVariable Long folderId) {
         // 判断是否包含子文件夹或文件
         boolean hasChildren = sysFileFolderService.hasChildren(folderId);
         int fileCount = sysFileFolderService.getFileCountByFolderId(folderId);
@@ -155,4 +146,11 @@ public class SysFileFolderController extends BaseController
     public AjaxResult deleteFilesByFolderId(@PathVariable Long folderId) {
         return success(sysFileFolderService.deleteFilesByFolderId(folderId));
     }
+
+    @PreAuthorize("@ss.hasPermi('system:folder:query')")
+    @GetMapping("/folderTreeSelectByDeptId/{deptId}")
+    public AjaxResult folderTreeSelectByDeptId(@PathVariable Long deptId ,SysFileFolder sysFileFolder) {
+        return success(sysFileFolderService.selectSysFileFolderTreeByDeptId(deptId,sysFileFolder));
+    }
 }
+

+ 42 - 0
xzl-admin/src/main/java/com/xzl/web/mapper/SysFileFolderMapper.java

@@ -4,6 +4,7 @@ import java.util.List;
 
 import com.xzl.common.core.domain.entity.SysFileFolder;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 文件文件夹(麻城知识库四级结构)Mapper接口
@@ -38,6 +39,14 @@ public interface SysFileFolderMapper
      */
     public int insertSysFileFolder(SysFileFolder knowledgeFileFolder);
 
+    /**
+     * 插入文件到文件夹
+     * @param folderId 文件夹ID
+     * @param fileIds 文件ID列表
+     * @return 操作结果
+     */
+    int insertFilesIntoFolder(@Param("folderId") Long folderId, @Param("fileIds") List<Long> fileIds);
+
     /**
      * 修改文件文件夹(麻城知识库四级结构)
      *
@@ -61,12 +70,45 @@ public interface SysFileFolderMapper
      */
     public int deleteSysFileFolderByFolderIds(Long[] folderIds);
 
+    /**
+     * 修改文件文件夹(麻城知识库四级结构)状态
+     *
+     * @param folderId 文件文件夹(麻城知识库四级结构)主键
+     * @param status 状态
+     * @return 结果
+     */
     int updateSysFileFolderStatus(Long folderId, String status);
 
 
+    /**
+     * 根据父级ID查询文件文件夹(麻城知识库四级结构)
+     *
+     * @param parentId 父级ID
+     * @return 文件文件夹(麻城知识库四级结构)集合
+     */
     List<SysFileFolder> selectSysFileFolderByParentId(Long parentId);
 
+    /**
+     * 根据文件夹ID查询文件数量
+     *
+     * @param folderId 文件夹ID
+     * @return 文件数量
+     */
     int countFilesByFolderId(Long folderId);
 
+    /**
+     * 根据文件夹ID删除文件
+     *
+     * @param folderId 文件夹ID
+     */
     void deleteFilesByFolderId(Long folderId);
+
+    /**
+     * 根据部门ID查询文件文件夹(麻城知识库四级结构)
+     *
+     * @param deptId 部门ID
+     * @return 文件文件夹(麻城知识库四级结构)集合
+     */
+    List<SysFileFolder> selectSysFileFolderListByDeptId(@Param("deptId") Long deptId);
+
 }

+ 9 - 0
xzl-admin/src/main/java/com/xzl/web/service/ISysFileFolderService.java

@@ -37,6 +37,14 @@ public interface ISysFileFolderService
      */
     public int insertSysFileFolder(SysFileFolder knowledgeFileFolder);
 
+    /**
+     * 新增文件夹并关联文件
+     * @param sysFileFolder 文件夹对象
+     * @param fileIds 文件ID列表
+     * @return 操作结果
+     */
+    int insertSysFileFolderAndFiles(SysFileFolder sysFileFolder, List<Long> fileIds);
+
     /**
      * 修改文件文件夹(麻城知识库四级结构)
      *
@@ -89,4 +97,5 @@ public interface ISysFileFolderService
      */
      int deleteFilesByFolderId(Long folderId);
 
+   List<TreeSelect> selectSysFileFolderTreeByDeptId(Long deptId, SysFileFolder sysFileFolder);
 }

+ 48 - 9
xzl-admin/src/main/java/com/xzl/web/service/impl/SysFileFolderServiceImpl.java

@@ -65,6 +65,32 @@ public class SysFileFolderServiceImpl implements ISysFileFolderService {
         return sysFileFolderMapper.insertSysFileFolder(sysFileFolder);
     }
 
+    /**
+     * 新增文件夹并关联文件
+     * @param sysFileFolder 文件夹对象
+     * @param fileIds 文件ID列表
+     * @return 操作结果
+     */
+    @Override
+    public int insertSysFileFolderAndFiles(SysFileFolder sysFileFolder, List<Long> fileIds) {
+        int result = insertSysFileFolder(sysFileFolder);
+        if (result > 0 && fileIds != null && !fileIds.isEmpty()) {
+            sysFileFolderMapper.insertFilesIntoFolder(sysFileFolder.getFolderId(), fileIds);
+        }
+        return result;
+    }
+
+    /**
+     * 插入文件到文件夹
+     * @param folderId 文件夹ID
+     * @param fileIds 文件ID列表
+     * @return 操作结果
+     */
+    public int insertFilesIntoFolder(Long folderId, List<Long> fileIds) {
+        // 实现插入文件到文件夹的逻辑
+        return sysFileFolderMapper.insertFilesIntoFolder(folderId, fileIds);
+    }
+
     /**
      * 修改文件文件夹(麻城知识库四级结构)
      *
@@ -125,18 +151,18 @@ public class SysFileFolderServiceImpl implements ISysFileFolderService {
         return !getChildList(list, t).isEmpty();
     }
 
-    public List<SysFileFolder> buildDeptTree(List<SysFileFolder> depts) {
+    public List<SysFileFolder> buildFolderTree(List<SysFileFolder> folders) {
         List<SysFileFolder> returnList = new ArrayList<SysFileFolder>();
-        List<Long> tempList = depts.stream().map(SysFileFolder::getFolderId).collect(Collectors.toList());
-        for (SysFileFolder dept : depts) {
+        List<Long> tempList = folders.stream().map(SysFileFolder::getFolderId).collect(Collectors.toList());
+        for (SysFileFolder folder : folders) {
             // 如果是顶级节点, 遍历该父节点的所有子节点
-            if (!tempList.contains(dept.getParentId())) {
-                recursionFn(depts, dept);
-                returnList.add(dept);
+            if (!tempList.contains(folder.getParentId())) {
+                recursionFn(folders, folder);
+                returnList.add(folder);
             }
         }
         if (returnList.isEmpty()) {
-            returnList = depts;
+            returnList = folders;
         }
         return returnList;
     }
@@ -149,7 +175,7 @@ public class SysFileFolderServiceImpl implements ISysFileFolderService {
      */
 
     public List<TreeSelect> buildSysFileFolderTreeSelect(List<SysFileFolder> sysFileFolders) {
-        List<SysFileFolder> sysFileFolderTrees = buildDeptTree(sysFileFolders);
+        List<SysFileFolder> sysFileFolderTrees = buildFolderTree(sysFileFolders);
         return sysFileFolderTrees.stream().map(TreeSelect::new).collect(Collectors.toList());
     }
 
@@ -159,6 +185,11 @@ public class SysFileFolderServiceImpl implements ISysFileFolderService {
         return buildSysFileFolderTreeSelect(sysFileFolders);
     }
 
+    /**
+     * 检查指定文件夹是否有子文件夹
+     * @param folderId 文件夹ID
+     * @return 如果存在子文件夹返回true,否则返回false
+     */
     @Override
     public boolean hasChildren(Long folderId) {
         List<SysFileFolder> children = sysFileFolderMapper.selectSysFileFolderByParentId(folderId);
@@ -174,7 +205,7 @@ public class SysFileFolderServiceImpl implements ISysFileFolderService {
     public int deleteFilesByFolderId(Long folderId) {
         // 删除当前文件夹下的所有文件
         sysFileFolderMapper.deleteFilesByFolderId(folderId);
-        
+
         // 再递归删除子文件夹及其文件
         List<SysFileFolder> children = sysFileFolderMapper.selectSysFileFolderByParentId(folderId);
         for (SysFileFolder child : children) {
@@ -186,4 +217,12 @@ public class SysFileFolderServiceImpl implements ISysFileFolderService {
         sysFileFolderMapper.deleteSysFileFolderByFolderId(folderId);
         return 0;
     }
+
+    @Override
+    public List<TreeSelect> selectSysFileFolderTreeByDeptId(Long deptId, SysFileFolder sysFileFolder) {
+        List<SysFileFolder> folders = sysFileFolderMapper.selectSysFileFolderListByDeptId(deptId);
+        return buildSysFileFolderTreeSelect(folders);
+    }
+
+
 }

+ 6 - 2
xzl-admin/src/main/resources/mapper/SysFileFolderMapper.xml

@@ -18,10 +18,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="createTime"    column="create_time"    />
         <result property="updateBy"    column="update_by"    />
         <result property="updateTime"    column="update_time"    />
+        <result property="deptId"    column="dept_id"    />
     </resultMap>
 
     <sql id="selectSysFileFolderVo">
-        select folder_id, parent_id, ancestors, folder_name, level, order_num, full_path, status, del_flag, create_by, create_time, update_by, update_time from sys_file_folder
+        select folder_id, parent_id, ancestors, folder_name, level, order_num, full_path, status, del_flag, create_by, create_time, update_by, update_time ,dept_id from sys_file_folder
     </sql>
 
     <select id="selectSysFileFolderList" parameterType="SysFileFolder" resultMap="SysFileFolderResult">
@@ -34,6 +35,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="orderNum != null "> and order_num = #{orderNum}</if>
             <if test="fullPath != null  and fullPath != ''"> and full_path = #{fullPath}</if>
             <if test="status != null  and status != ''"> and status = #{status}</if>
+             <if test="deptId != null "> and dept_id = #{deptId}</if>
         </where>
     </select>
 
@@ -57,6 +59,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="createTime != null">create_time,</if>
             <if test="updateBy != null">update_by,</if>
             <if test="updateTime != null">update_time,</if>
+            <if test="deptId != null">dept_id,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="parentId != null">#{parentId},</if>
@@ -71,6 +74,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="createTime != null">#{createTime},</if>
             <if test="updateBy != null">#{updateBy},</if>
             <if test="updateTime != null">#{updateTime},</if>
+            <if test="deptId != null">#{deptId},</if>
          </trim>
     </insert>
 
@@ -89,6 +93,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="createTime != null">create_time = #{createTime},</if>
             <if test="updateBy != null">update_by = #{updateBy},</if>
             <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="deptId != null">dept_id = #{deptId},</if>
         </trim>
         where folder_id = #{folderId}
     </update>
@@ -112,7 +117,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         SELECT COUNT(*) FROM sys_file WHERE folder_id = #{folderId} AND del_flag = '0'
     </select>
 
-    <!-- 删除指定文件夹下的所有文件 -->
     <delete id="deleteFilesByFolderId" parameterType="Long">
         DELETE FROM sys_file WHERE folder_id = #{folderId}
     </delete>

+ 12 - 0
xzl-common/src/main/java/com/xzl/common/core/domain/entity/SysFileFolder.java

@@ -59,6 +59,9 @@ public class SysFileFolder extends BaseEntity
     /** 删除标志(0存在 2删除) */
     private String delFlag;
 
+    /** 部门ID */
+    private Long deptId;
+
     public void setFolderId(Long folderId)
     {
         this.folderId = folderId;
@@ -165,6 +168,7 @@ public class SysFileFolder extends BaseEntity
             .append("createTime", getCreateTime())
             .append("updateBy", getUpdateBy())
             .append("updateTime", getUpdateTime())
+                .append("deptId", getDeptId())
             .toString();
     }
 
@@ -195,4 +199,12 @@ public class SysFileFolder extends BaseEntity
         }
         return pinyinStr.toString();
     }
+
+    public Long getDeptId() {
+        return deptId;
+    }
+
+    public void setDeptId(Long deptId) {
+        this.deptId = deptId;
+    }
 }

+ 6 - 2
xzl-ui/src/api/system/file.js

@@ -1,4 +1,5 @@
 import request from '@/utils/request'
+import {getToken} from "@/utils/auth";
 
 // 查询文件列表
 export function listFile(query) {
@@ -57,8 +58,11 @@ export function download(fileId) {
   return request({
     url: '/system/file/download/' + fileId,
     method: 'get',
-    responseType: 'blob'
-  });
+    responseType: 'blob',
+    headers: {
+      Authorization: 'Bearer ' + getToken() // 确保 token 正确
+    }
+  })
 }
 
 

+ 7 - 0
xzl-ui/src/api/system/folder.js

@@ -59,3 +59,10 @@ export function checkFolderDeletable(folderId) {
   })
 }
 
+export function folderTreeSelectByDeptId(deptId) {
+  return request({
+    url: '/system/folder/' + deptId,
+    method: 'get'
+  })
+}
+

+ 19 - 5
xzl-ui/src/views/fileTree/folder/index.vue

@@ -359,7 +359,15 @@
 import {getToken} from "@/utils/auth";
 import Treeselect from "@riophae/vue-treeselect";
 import "@riophae/vue-treeselect/dist/vue-treeselect.css";
-import {addFolder, delFolder, folderTreeSelect, getFolder, updateFolder,checkFolderDeletable} from "@/api/system/folder";
+import {
+  addFolder,
+  delFolder,
+  folderTreeSelect,
+  getFolder,
+  updateFolder,
+  checkFolderDeletable,
+  folderTreeSelectByDeptId
+} from "@/api/system/folder";
 import {addFile, delFile, download, listFile, updateFile} from "@/api/system/file";
 import dict from "@/utils/dict";
 import {parseTime} from "@/utils/xzl";
@@ -516,11 +524,17 @@ export default {
       );
     },
     /** 查询文件夹下拉树结构 */
-    getFileTree() {
-      folderTreeSelect().then(response => {
+    // getFileTree() {
+    //   folderTreeSelect().then(response => {
+    //     this.fileOptions = response.data;
+    //     console.log(this.fileOptions)
+    //   });
+    // },
+
+    getFileTree(deptId){
+      folderTreeSelectByDeptId(deptId).then(response => {
         this.fileOptions = response.data;
-        console.log(this.fileOptions)
-      });
+      })
     },
     // 筛选节点
     filterNode(value, data) {