刘光辉
15 小时以前 34981c30a78e8bbd7791131059a9210f9928b62c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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);
}