Skip to content

Commit bedf867

Browse files
committed
feature: refactor cleaning template service for simplified pagination handling and enhance operator management
1 parent b416a12 commit bedf867

File tree

19 files changed

+318
-177
lines changed

19 files changed

+318
-177
lines changed

backend/services/data-cleaning-service/src/main/java/com/dataengine/cleaning/application/service/CleaningTemplateService.java

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
import com.dataengine.cleaning.interfaces.dto.UpdateCleaningTemplateRequest;
1313
import lombok.RequiredArgsConstructor;
1414
import org.apache.commons.lang3.StringUtils;
15-
import org.apache.ibatis.annotations.Param;
1615
import org.springframework.stereotype.Service;
1716
import org.springframework.transaction.annotation.Transactional;
1817

@@ -30,16 +29,11 @@ public class CleaningTemplateService {
3029

3130
private final OperatorInstanceMapper operatorInstanceMapper;
3231

33-
public List<CleaningTemplate> getTemplates(String keywords, Integer page, Integer size) {
32+
public List<CleaningTemplate> getTemplates(String keywords) {
3433
List<OperatorResponse> allOperators = cleaningTemplateMapper.findAllOperators();
3534
Map<String, OperatorResponse> operatorsMap = allOperators.stream()
3635
.collect(Collectors.toMap(OperatorResponse::getId, Function.identity()));
37-
38-
Integer offset = null;
39-
if (page != null && size != null) {
40-
offset = page * size;
41-
}
42-
List<TemplateWithInstance> allTemplates = cleaningTemplateMapper.findAllTemplates(keywords, size, offset);
36+
List<TemplateWithInstance> allTemplates = cleaningTemplateMapper.findAllTemplates(keywords);
4337
Map<String, List<TemplateWithInstance>> templatesMap = allTemplates.stream()
4438
.collect(Collectors.groupingBy(TemplateWithInstance::getId));
4539
return templatesMap.entrySet().stream().map(twi -> {
@@ -63,10 +57,6 @@ public List<CleaningTemplate> getTemplates(String keywords, Integer page, Intege
6357
}).toList();
6458
}
6559

66-
public int countTemplates(String keywords) {
67-
return cleaningTemplateMapper.findAllTemplates(keywords, null, null).size();
68-
}
69-
7060
@Transactional
7161
public CleaningTemplate createTemplate(CreateCleaningTemplateRequest request) {
7262
CleaningTemplate template = new CleaningTemplate();

backend/services/data-cleaning-service/src/main/java/com/dataengine/cleaning/infrastructure/persistence/mapper/CleaningTemplateMapper.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@
1111
@Mapper
1212
public interface CleaningTemplateMapper {
1313

14-
List<TemplateWithInstance> findAllTemplates(@Param("keywords") String keywords,
15-
@Param("size") Integer size, @Param("offset") Integer offset);
14+
List<TemplateWithInstance> findAllTemplates(@Param("keywords") String keywords);
1615

1716
List<OperatorResponse> findAllOperators();
1817

backend/services/data-cleaning-service/src/main/java/com/dataengine/cleaning/interfaces/api/CleaningTemplateController.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import org.springframework.web.bind.annotation.RequestParam;
1919
import org.springframework.web.bind.annotation.RestController;
2020

21+
import java.util.Comparator;
2122
import java.util.List;
2223

2324

@@ -32,14 +33,17 @@ public ResponseEntity<Response<PagedResponse<CleaningTemplate>>> cleaningTemplat
3233
@RequestParam(value = "page", required = false) Integer page,
3334
@RequestParam(value = "size", required = false) Integer size,
3435
@RequestParam(value = "keywords", required = false) String keyword) {
35-
List<CleaningTemplate> templates = cleaningTemplateService.getTemplates(keyword, page, size);
36-
if (page != null && size != null) {
37-
int count = cleaningTemplateService.countTemplates(keyword);
38-
int totalPages = (count + size + 1) / size;
39-
return ResponseEntity.ok(Response.ok(PagedResponse.of(templates, page, count, totalPages)));
40-
} else {
36+
List<CleaningTemplate> templates = cleaningTemplateService.getTemplates(keyword);
37+
if (page == null || size == null) {
4138
return ResponseEntity.ok(Response.ok(PagedResponse.of(templates)));
4239
}
40+
int count = templates.size();
41+
int totalPages = (count + size + 1) / size;
42+
List<CleaningTemplate> limitTemplates = templates.stream()
43+
.sorted(Comparator.comparing(CleaningTemplate::getCreatedAt))
44+
.skip((long) page * size)
45+
.limit(size).toList();
46+
return ResponseEntity.ok(Response.ok(PagedResponse.of(limitTemplates, page, count, totalPages)));
4347
}
4448

4549
@PostMapping

backend/services/data-cleaning-service/src/main/resources/mappers/CleaningTemplateMapper.xml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,6 @@
1111
</if>
1212
</where>
1313
ORDER BY created_at
14-
<if test="size != null and offset != null">
15-
LIMIT ${size} OFFSET ${offset}
16-
</if>
1714
</select>
1815

1916
<select id="findAllOperators" resultType="com.dataengine.cleaning.interfaces.dto.OperatorResponse">

backend/services/operator-market-service/src/main/java/com/dataengine/operator/application/CategoryService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public List<CategoryTreeResponse> getAllCategories() {
3535
private List<CategoryTreeResponse> groupByParentIdSorted(List<RelationCategoryDTO> relations,
3636
Map<Integer, Category> categories) {
3737
Map<Integer, List<RelationCategoryDTO>> groupedByParentId = relations.stream()
38-
.filter(relation -> relation.getParentId() > 0)
38+
.filter(relation -> StringUtils.isNotBlank(relation.getOperatorId()))
3939
.collect(Collectors.groupingBy(RelationCategoryDTO::getParentId));
4040

4141
return groupedByParentId.entrySet().stream()

backend/services/operator-market-service/src/main/java/com/dataengine/operator/application/OperatorService.java

Lines changed: 34 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.dataengine.operator.application;
22

33
import com.dataengine.operator.domain.converter.OperatorConverter;
4+
import com.dataengine.operator.infrastructure.persistence.mapper.CategoryRelationMapper;
45
import com.dataengine.operator.infrastructure.persistence.mapper.OperatorMapper;
56
import com.dataengine.operator.interfaces.dto.*;
67
import com.dataengine.operator.domain.modal.Operator;
@@ -15,6 +16,8 @@
1516
public class OperatorService {
1617
private final OperatorMapper operatorMapper;
1718

19+
private final CategoryRelationMapper relationMapper;
20+
1821
public List<OperatorResponse> getOperators(Integer page, Integer size, List<Integer> categories,
1922
String operatorName, Boolean isStar) {
2023
Integer offset = page * size;
@@ -28,26 +31,41 @@ public int getOperatorsCount(List<Integer> categories, String operatorName, Bool
2831
return operatorMapper.countOperatorsByCriteria(operatorName, categories, isStar);
2932
}
3033

31-
private OperatorResponse toDto(Operator entity) {
32-
OperatorResponse dto = new OperatorResponse();
33-
dto.setId(entity.getId());
34-
dto.setName(entity.getName());
35-
dto.setDescription(entity.getDescription());
36-
dto.setVersion(entity.getVersion());
37-
return dto;
38-
}
3934
public OperatorResponse getOperatorById(String id) {
40-
// TODO: 查询算子详情
41-
return new OperatorResponse();
42-
}
43-
public OperatorResponse updateOperator(String id, UpdateOperatorRequest req) {
44-
// TODO: 更新算子
45-
return new OperatorResponse();
35+
Operator operator = operatorMapper.findOperatorById(id);
36+
return OperatorConverter.INSTANCE.operatorToResponse(operator);
4637
}
38+
4739
public OperatorResponse createOperator(CreateOperatorRequest req) {
48-
// TODO: 创建算子
49-
return new OperatorResponse();
40+
Operator operator = new Operator();
41+
operator.setId(req.getId());
42+
operator.setName(req.getName());
43+
operator.setDescription(req.getDescription());
44+
operator.setVersion(req.getVersion());
45+
operator.setInputs(req.getInputs());
46+
operator.setOutputs(req.getOutputs());
47+
operator.setRuntime(req.getRuntime());
48+
operator.setSettings(req.getSettings());
49+
operatorMapper.insertOperator(operator);
50+
relationMapper.batchInsert(req.getId(), req.getCategories());
51+
return OperatorConverter.INSTANCE.operatorToResponse(operator);
52+
}
53+
54+
public OperatorResponse updateOperator(String id, UpdateOperatorRequest req) {
55+
Operator operator = new Operator();
56+
operator.setId(id);
57+
operator.setName(req.getName());
58+
operator.setDescription(req.getDescription());
59+
operator.setVersion(req.getVersion());
60+
operator.setInputs(req.getInputs());
61+
operator.setOutputs(req.getOutputs());
62+
operator.setRuntime(req.getRuntime());
63+
operator.setSettings(req.getSettings());
64+
operatorMapper.updateOperator(operator);
65+
relationMapper.batchInsert(id, req.getCategories());
66+
return getOperatorById(id);
5067
}
68+
5169
public OperatorResponse uploadOperator(MultipartFile file, String description) {
5270
// TODO: 文件上传与解析
5371
return new OperatorResponse();

backend/services/operator-market-service/src/main/java/com/dataengine/operator/infrastructure/persistence/mapper/CategoryRelationMapper.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.dataengine.operator.domain.modal.RelationCategoryDTO;
44
import org.apache.ibatis.annotations.Mapper;
5+
import org.apache.ibatis.annotations.Param;
56

67
import java.util.List;
78

@@ -11,4 +12,6 @@ public interface CategoryRelationMapper {
1112
List<RelationCategoryDTO> findAllRelationWithCategory();
1213

1314
List<RelationCategoryDTO> findFullOuterJoinNative();
15+
16+
void batchInsert(@Param("operatorId") String operatorId, @Param("categories") List<Integer> categories);
1417
}

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,10 @@ List<Operator> findOperatorsByCriteria(@Param("size") Integer size, @Param("offs
1818
Integer countOperatorsByCriteria(@Param("operatorName") String operatorName,
1919
@Param("categories") List<Integer> categories,
2020
@Param("isStar") Boolean isStar);
21+
22+
Operator findOperatorById(@Param("id") String id);
23+
24+
void updateOperator(Operator operator);
25+
26+
void insertOperator(Operator operator);
2127
}

backend/services/operator-market-service/src/main/java/com/dataengine/operator/interfaces/dto/CreateOperatorRequest.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,33 @@
44
import lombok.Getter;
55
import lombok.Setter;
66

7+
import java.util.List;
8+
79
/**
810
* CreateOperatorRequest
911
*/
1012

1113
@Getter
1214
@Setter
1315
public class CreateOperatorRequest {
16+
private String id;
1417

1518
private String name;
1619

1720
private String description;
1821

1922
private String version;
2023

21-
private String category;
24+
private String inputs;
25+
26+
private String outputs;
27+
28+
private List<Integer> categories;
29+
30+
private String runtime;
31+
32+
private String settings;
2233

23-
private String documentation;
34+
private String fileName;
2435
}
2536

backend/services/operator-market-service/src/main/java/com/dataengine/operator/interfaces/dto/UpdateOperatorRequest.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import lombok.Getter;
55
import lombok.Setter;
66

7+
import java.util.List;
8+
79
/**
810
* UpdateOperatorRequest
911
*/
@@ -17,8 +19,14 @@ public class UpdateOperatorRequest {
1719

1820
private String version;
1921

20-
private String category;
22+
private String inputs;
23+
24+
private String outputs;
25+
26+
private List<Integer> categories;
27+
28+
private String runtime;
2129

22-
private String documentation;
30+
private String settings;
2331
}
2432

0 commit comments

Comments
 (0)