Skip to content

Commit 3dfda54

Browse files
committed
feature: add categories field to operator and update mapping logic
1 parent 99f9cf4 commit 3dfda54

File tree

4 files changed

+24
-10
lines changed

4 files changed

+24
-10
lines changed

backend/openapi/specs/operator-market.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -490,6 +490,11 @@ components:
490490
outputs:
491491
type: string
492492
description: 输入类型
493+
categories:
494+
type: array
495+
description: 算子分类列表
496+
items:
497+
type: integer
493498
runtime:
494499
type: string
495500
description: 运行时设置

backend/services/operator-market-service/src/main/java/com/dataengine/operator/domain/converter/OperatorConverter.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,26 @@
33
import com.dataengine.operator.domain.modal.Operator;
44
import com.dataengine.operator.interfaces.dto.OperatorResponse;
55
import org.mapstruct.Mapper;
6+
import org.mapstruct.Mapping;
7+
import org.mapstruct.Named;
68
import org.mapstruct.factory.Mappers;
79

10+
import java.util.Arrays;
11+
import java.util.Collections;
12+
import java.util.List;
13+
814
@Mapper
915
public interface OperatorConverter {
1016
OperatorConverter INSTANCE = Mappers.getMapper(OperatorConverter.class);
1117

18+
@Mapping(target = "categories", source = "categories", qualifiedByName = "stringToList")
1219
OperatorResponse operatorToResponse(Operator operator);
20+
21+
@Named("stringToList")
22+
static List<Integer> stringToList(String input) {
23+
if (input == null || input.isEmpty()) {
24+
return Collections.emptyList();
25+
}
26+
return Arrays.stream(input.split(",")).map(Integer::valueOf).toList();
27+
}
1328
}

backend/services/operator-market-service/src/main/java/com/dataengine/operator/domain/modal/Operator.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ public class Operator {
2020

2121
private String outputs;
2222

23+
private String categories;
24+
2325
private String runtime;
2426

2527
private String settings;

backend/services/operator-market-service/src/main/resources/mappers/OperatorMapper.xml

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,7 @@
99

1010
<select id="findOperatorsByCriteria" parameterType="map" resultType="com.dataengine.operator.domain.modal.Operator">
1111
SELECT operator_id as id, operator_name as name, description, version, inputs, outputs, runtime, settings,
12-
is_star, created_at, updated_at
13-
FROM
14-
(
15-
SELECT operator_id, operator_name, description, version, inputs, outputs, runtime, settings, is_star,
16-
created_at, updated_at, ROW_NUMBER() OVER (
17-
PARTITION BY operator_id -- 按 id 分组
18-
ORDER BY created_at DESC -- 按创建时间降序排列 (最新时间在前)
19-
) AS rn -- 为每组内的行分配序号
12+
is_star, created_at, updated_at, GROUP_CONCAT(category_id ORDER BY created_at DESC SEPARATOR ',') AS categories
2013
FROM v_operator
2114
<where>
2215
<if test="operatorName != null and operatorName != ''">
@@ -32,8 +25,7 @@
3225
AND is_star = #{isStar}
3326
</if>
3427
</where>
35-
) ranked_data
36-
WHERE rn = 1
28+
GROUP BY operator_id
3729
LIMIT ${size} OFFSET ${offset};
3830
</select>
3931
</mapper>

0 commit comments

Comments
 (0)