Skip to content

Commit 10ad04b

Browse files
committed
fix: fix some data isolation related bugs.
1 parent 95123dd commit 10ad04b

16 files changed

Lines changed: 292 additions & 265 deletions

File tree

backend/services/data-management-service/src/main/java/com/datamate/datamanagement/application/DatasetApplicationService.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ public AllDatasetStatisticsResponse getAllDatasetStatistics() {
244244
public void processDataSourceAsync(String datasetId, String dataSourceId) {
245245
try {
246246
log.info("Initiating data source file scanning, dataset ID: {}, collection task ID: {}", datasetId, dataSourceId);
247-
List<String> filePaths = getFilePaths(dataSourceId);
247+
List<String> filePaths = getFilePaths(dataSourceId, datasetRepository.getById(datasetId));
248248
if (CollectionUtils.isEmpty(filePaths)) {
249249
return;
250250
}
@@ -255,8 +255,8 @@ public void processDataSourceAsync(String datasetId, String dataSourceId) {
255255
}
256256
}
257257

258-
private List<String> getFilePaths(String dataSourceId) {
259-
CollectionTaskDetailResponse taskDetail = collectionTaskClient.getTaskDetail(dataSourceId).getData();
258+
private List<String> getFilePaths(String dataSourceId, Dataset dataset) {
259+
CollectionTaskDetailResponse taskDetail = collectionTaskClient.getTaskDetail(dataSourceId, dataset.getCreatedBy()).getData();
260260
if (taskDetail == null) {
261261
log.warn("Fail to get collection task detail, task ID: {}", dataSourceId);
262262
return Collections.emptyList();

backend/services/data-management-service/src/main/java/com/datamate/datamanagement/infrastructure/client/CollectionTaskClient.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import org.springframework.cloud.openfeign.FeignClient;
66
import org.springframework.web.bind.annotation.GetMapping;
77
import org.springframework.web.bind.annotation.PathVariable;
8+
import org.springframework.web.bind.annotation.RequestHeader;
89

910
/**
1011
* 数据归集服务 Feign Client
@@ -18,5 +19,5 @@ public interface CollectionTaskClient {
1819
* @return 任务详情
1920
*/
2021
@GetMapping("/api/data-collection/tasks/{id}")
21-
Response<CollectionTaskDetailResponse> getTaskDetail(@PathVariable("id") String taskId);
22+
Response<CollectionTaskDetailResponse> getTaskDetail(@PathVariable("id") String taskId, @RequestHeader("User") String authorization);
2223
}

backend/services/operator-market-service/src/main/java/com/datamate/operator/domain/model/Operator.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.datamate.operator.domain.model;
22

33
import com.baomidou.mybatisplus.annotation.TableName;
4+
import com.datamate.common.domain.model.base.BaseEntity;
45
import lombok.Getter;
56
import lombok.Setter;
67

@@ -9,9 +10,7 @@
910
@Getter
1011
@Setter
1112
@TableName(value = "t_operator")
12-
public class Operator {
13-
private String id;
14-
13+
public class Operator extends BaseEntity<String> {
1514
private String name;
1615

1716
private String description;
@@ -29,9 +28,5 @@ public class Operator {
2928
private String fileName;
3029

3130
private Boolean isStar;
32-
33-
private LocalDateTime createdAt;
34-
35-
private LocalDateTime updatedAt;
3631
}
3732

backend/services/operator-market-service/src/main/java/com/datamate/operator/infrastructure/persistence/Impl/OperatorViewRepositoryImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ private QueryWrapper<OperatorView> getQueryWrapper(String keyword, List<List<Str
7878
}
7979

8080
queryWrapper.groupBy("operator_id", "operator_name", "description", "version", "inputs", "outputs",
81-
"runtime", "settings", "is_star", "created_at", "updated_at")
81+
"runtime", "settings", "is_star", "created_at", "updated_at", "created_by", "updated_by")
8282
.having(!havingSql.isEmpty(), havingSql.toString())
8383
.orderByDesc("created_at");
8484
return queryWrapper;

backend/services/operator-market-service/src/main/java/com/datamate/operator/infrastructure/persistence/mapper/OperatorMapper.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,14 @@
77
import org.apache.ibatis.annotations.Select;
88

99
@Mapper
10-
@IgnoreDataScopeAnnotation
1110
public interface OperatorMapper extends BaseMapper<Operator> {
1211

12+
@IgnoreDataScopeAnnotation
1313
@Select("SELECT count(1) FROM t_operator_instance oi JOIN t_clean_template t ON oi.instance_id = t.id " +
1414
"WHERE oi.operator_id = #{operatorId}")
1515
int operatorInTemplate(String operatorId);
1616

17+
@IgnoreDataScopeAnnotation
1718
@Select("SELECT count(1) FROM t_operator_instance oi JOIN t_clean_task t ON oi.instance_id = t.id " +
1819
"WHERE oi.operator_id = #{operatorId} AND t.status != 'COMPLETED'")
1920
int operatorInUnstopTask(String operatorId);

backend/services/operator-market-service/src/main/java/com/datamate/operator/infrastructure/persistence/mapper/OperatorViewMapper.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,22 +12,22 @@
1212

1313

1414
@Mapper
15-
@IgnoreDataScopeAnnotation
1615
public interface OperatorViewMapper extends BaseMapper<OperatorView> {
1716
@Select("SELECT operator_id AS id, operator_name AS name, description, version, inputs, outputs, runtime, " +
18-
"settings, is_star, created_at, updated_at, " +
17+
"settings, is_star, created_at, updated_at, created_by, updated_by, " +
1918
"STRING_AGG(CAST(category_id AS TEXT), ',' ORDER BY created_at DESC) AS categories " +
2019
"FROM v_operator ${ew.customSqlSegment}")
2120
IPage<OperatorView> findOperatorsByCriteria(IPage<OperatorView> page,
2221
@Param(Constants.WRAPPER) Wrapper<OperatorView> queryWrapper);
2322

24-
@Select("SELECT COUNT(1) FROM (SELECT 1 FROM v_operator ${ew.customSqlSegment}) AS t")
23+
@Select("SELECT COUNT(1) FROM (SELECT operator_id AS id, operator_name AS name, description, version, inputs, outputs, runtime, " +
24+
"settings, is_star, created_at, updated_at, created_by, updated_by FROM v_operator ${ew.customSqlSegment}) AS t")
2525
Integer countOperatorsByCriteria(@Param(Constants.WRAPPER) Wrapper<OperatorView> queryWrapper);
2626

2727
@Select("SELECT operator_id AS id, operator_name AS name, description, version, inputs, outputs, runtime, " +
28-
"settings, is_star, created_at, updated_at, " +
28+
"settings, is_star, created_at, updated_at, created_by, updated_by, " +
2929
"STRING_AGG(category_name, ',' ORDER BY created_at DESC) AS categories " +
3030
"FROM v_operator WHERE operator_id = #{id} " +
31-
"GROUP BY operator_id, operator_name, description, version, inputs, outputs, runtime, settings, is_star, created_at, updated_at")
31+
"GROUP BY operator_id, operator_name, description, version, inputs, outputs, runtime, settings, is_star, created_at, updated_at, created_by, updated_by")
3232
OperatorView findOperatorById(@Param("id") String id);
3333
}

backend/services/rag-indexer-service/src/main/java/com/datamate/rag/indexer/infrastructure/client/GraphRagClient.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import org.springframework.cloud.openfeign.FeignClient;
55
import org.springframework.web.bind.annotation.PathVariable;
66
import org.springframework.web.bind.annotation.PostMapping;
7+
import org.springframework.web.bind.annotation.RequestHeader;
78

89
/**
910
* 知识图谱RAG客户端
@@ -19,5 +20,5 @@ public interface GraphRagClient {
1920
* @return 任务详情
2021
*/
2122
@PostMapping("/api/rag/process/{id}")
22-
Response<?> startGraphRagTask(@PathVariable("id") String knowledgeBaseId);
23+
Response<?> startGraphRagTask(@PathVariable("id") String knowledgeBaseId, @RequestHeader("User") String authorization);
2324
}

backend/services/rag-indexer-service/src/main/java/com/datamate/rag/indexer/infrastructure/event/RagEtlService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ public void processAfterCommit(DataInsertedEvent event) {
7171
List<RagFile> ragFiles = ragFileRepository.findNotSuccessByKnowledgeBaseId(event.knowledgeBase().getId());
7272
if (RagType.GRAPH.equals(event.knowledgeBase().getType())){
7373
log.info("Knowledge base {} is of type GRAPH. Skipping RAG ETL processing.", event.knowledgeBase().getName());
74-
graphRagClient.startGraphRagTask(event.knowledgeBase().getId());
74+
graphRagClient.startGraphRagTask(event.knowledgeBase().getId(), event.knowledgeBase().getCreatedBy());
7575
return;
7676
}
7777

backend/shared/domain-common/src/main/java/com/datamate/common/infrastructure/config/DataScopeHandle.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.apache.ibatis.plugin.Signature;
2121
import org.springframework.stereotype.Component;
2222

23+
import java.lang.reflect.Method;
2324
import java.time.LocalDateTime;
2425
import java.util.Arrays;
2526
import java.util.Objects;
@@ -64,6 +65,16 @@ public Expression getSqlSegment(Expression where, String mappedStatementId) {
6465
if (annotation != null) {
6566
return where;
6667
}
68+
String methodName = mappedStatementId.substring(mappedStatementId.lastIndexOf(C_DOTS) + 1);
69+
for (Method method : clazz.getMethods()) {
70+
if (method.getName().equals(methodName)) {
71+
annotation = method.getAnnotation(IgnoreDataScopeAnnotation.class);
72+
if (annotation != null) {
73+
return where;
74+
}
75+
break;
76+
}
77+
}
6778
ParenthesedExpressionList<StringValue> valueList =
6879
new ParenthesedExpressionList<>(Arrays.asList(new StringValue(userInfoHolder.get()), SYSTEM_USER));
6980
InExpression inExpression = new InExpression();

backend/shared/domain-common/src/main/java/com/datamate/common/infrastructure/config/IgnoreDataScopeAnnotation.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@
1010
*/
1111
@Documented
1212
@Retention(RetentionPolicy.RUNTIME)
13-
@Target({ElementType.TYPE})
13+
@Target({ElementType.TYPE, ElementType.METHOD})
1414
public @interface IgnoreDataScopeAnnotation {
1515
}

0 commit comments

Comments
 (0)