知识库数据隔离测试完成

This commit is contained in:
2025-11-08 13:42:33 +08:00
parent 38209a642d
commit 95919eb27b
13 changed files with 324 additions and 21 deletions

View File

@@ -35,6 +35,11 @@
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
<result column="delete_time" property="deleteTime" jdbcType="TIMESTAMP"/>
<result column="deleted" property="deleted" jdbcType="BOOLEAN"/>
<!-- 权限字段 -->
<result column="permission_type" property="permissionType" jdbcType="VARCHAR"/>
<result column="can_read" property="canRead" jdbcType="BOOLEAN"/>
<result column="can_write" property="canWrite" jdbcType="BOOLEAN"/>
<result column="can_delete" property="canDelete" jdbcType="BOOLEAN"/>
</resultMap>
<!-- 基础字段 -->
@@ -106,10 +111,27 @@
<!-- selectAiKnowledges带权限过滤 -->
<select id="selectAiKnowledges" resultMap="BaseResultMap">
SELECT DISTINCT k.*
SELECT
k.*,
CASE
WHEN MAX(CASE WHEN rp.dept_id IS NULL AND rp.role_id IS NULL THEN 1 ELSE 0 END) = 1 THEN 'all'
WHEN MAX(CASE WHEN rp.dept_id IS NOT NULL AND rp.role_id IS NULL THEN 1 ELSE 0 END) = 1 THEN 'dept'
WHEN MAX(CASE WHEN rp.dept_id IS NULL AND rp.role_id IS NOT NULL THEN 1 ELSE 0 END) = 1 THEN 'role'
ELSE 'custom'
END as permission_type,
MAX(rp.can_read) as can_read,
MAX(rp.can_write) as can_write,
MAX(rp.can_execute) as can_delete
FROM tb_ai_knowledge k
<include refid="Permission_Filter"/>
<include refid="Filter_Clause"/>
GROUP BY k.id, k.title, k.avatar, k.description, k.content, k.source_type, k.source_id,
k.file_name, k.file_path, k.category, k.tags, k.dify_dataset_id,
k.dify_indexing_technique, k.embedding_model, k.embedding_model_provider,
k.rerank_model, k.rerank_model_provider, k.reranking_enable,
k.retrieval_top_k, k.retrieval_score_threshold, k.vector_id,
k.document_count, k.total_chunks, k.status, k.creator, k.creator_dept,
k.updater, k.create_time, k.update_time, k.delete_time, k.deleted
ORDER BY k.create_time DESC
</select>
@@ -255,10 +277,27 @@
<!-- selectKnowledgesPage分页查询知识库带权限过滤 -->
<select id="selectKnowledgesPage" resultMap="BaseResultMap">
SELECT DISTINCT k.*
SELECT
k.*,
CASE
WHEN MAX(CASE WHEN rp.dept_id IS NULL AND rp.role_id IS NULL THEN 1 ELSE 0 END) = 1 THEN 'all'
WHEN MAX(CASE WHEN rp.dept_id IS NOT NULL AND rp.role_id IS NULL THEN 1 ELSE 0 END) = 1 THEN 'dept'
WHEN MAX(CASE WHEN rp.dept_id IS NULL AND rp.role_id IS NOT NULL THEN 1 ELSE 0 END) = 1 THEN 'role'
ELSE 'custom'
END as permission_type,
MAX(rp.can_read) as can_read,
MAX(rp.can_write) as can_write,
MAX(rp.can_execute) as can_delete
FROM tb_ai_knowledge k
<include refid="Permission_Filter"/>
<include refid="Filter_Clause"/>
GROUP BY k.id, k.title, k.avatar, k.description, k.content, k.source_type, k.source_id,
k.file_name, k.file_path, k.category, k.tags, k.dify_dataset_id,
k.dify_indexing_technique, k.embedding_model, k.embedding_model_provider,
k.rerank_model, k.rerank_model_provider, k.reranking_enable,
k.retrieval_top_k, k.retrieval_score_threshold, k.vector_id,
k.document_count, k.total_chunks, k.status, k.creator, k.creator_dept,
k.updater, k.create_time, k.update_time, k.delete_time, k.deleted
ORDER BY k.create_time DESC
LIMIT #{pageParam.offset}, #{pageParam.pageSize}
</select>