From 34981c30a78e8bbd7791131059a9210f9928b62c Mon Sep 17 00:00:00 2001
From: 刘光辉 <347230014@qq.com>
Date: 星期四, 17 九月 2026 09:24:09 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into master

---
 jnpf-dms/jnpf-dms-biz/src/main/java/jnpf/dmsMapper/DmsFolderMapper.java |   42 ++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 42 insertions(+), 0 deletions(-)

diff --git a/jnpf-dms/jnpf-dms-biz/src/main/java/jnpf/dmsMapper/DmsFolderMapper.java b/jnpf-dms/jnpf-dms-biz/src/main/java/jnpf/dmsMapper/DmsFolderMapper.java
new file mode 100644
index 0000000..20653d6
--- /dev/null
+++ b/jnpf-dms/jnpf-dms-biz/src/main/java/jnpf/dmsMapper/DmsFolderMapper.java
@@ -0,0 +1,42 @@
+package jnpf.dmsMapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import jnpf.dmsEntity.permission.entity.DmsFolderEntity;
+import jnpf.dmsEntity.permission.model.DmsFolderAncestorRow;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
+import java.util.UUID;
+
+@Mapper
+public interface DmsFolderMapper extends BaseMapper<DmsFolderEntity> {
+    @Select("SELECT id, tenant_id, parent_id, name, created_by, created_at "
+            + "FROM public.dms_folders WHERE tenant_id = #{tenantId} AND id = #{id}")
+    DmsFolderEntity selectByTenantAndId(@Param("tenantId") String tenantId, @Param("id") UUID id);
+
+    @Select({"<script>",
+            "SELECT id, tenant_id, parent_id, name, created_by, created_at",
+            "FROM public.dms_folders WHERE tenant_id = #{tenantId} AND id IN",
+            "<foreach collection='ids' item='id' open='(' separator=',' close=')'>#{id}</foreach>",
+            "</script>"})
+    List<DmsFolderEntity> selectByTenantAndIds(@Param("tenantId") String tenantId,
+                                                @Param("ids") List<UUID> ids);
+
+    @Select({"<script>",
+            "WITH RECURSIVE ancestors(start_folder_id, ancestor_folder_id, parent_id, depth) AS (",
+            "SELECT f.id, f.id, f.parent_id, 0 FROM public.dms_folders f",
+            "WHERE f.tenant_id = #{tenantId} AND f.id IN",
+            "<foreach collection='folderIds' item='id' open='(' separator=',' close=')'>#{id}</foreach>",
+            "UNION ALL",
+            "SELECT a.start_folder_id, p.id, p.parent_id, a.depth + 1",
+            "FROM ancestors a JOIN public.dms_folders p",
+            "ON p.tenant_id = #{tenantId} AND p.id = a.parent_id",
+            ")",
+            "SELECT start_folder_id, ancestor_folder_id, depth FROM ancestors",
+            "ORDER BY start_folder_id, depth",
+            "</script>"})
+    List<DmsFolderAncestorRow> selectAncestorRows(@Param("tenantId") String tenantId,
+                                                   @Param("folderIds") List<UUID> folderIds);
+}

--
Gitblit v1.8.0