From 4c929d59a8caa5c5352bc05fb95f7adbc6b9ca10 Mon Sep 17 00:00:00 2001 From: daikon <1059907724@qq.com> Date: Thu, 31 Oct 2024 23:52:31 +0800 Subject: [PATCH] (improvement)(knowledge) support DimValueAliasReq single (#1871) --- .../api/pojo/request/DimValueAliasReq.java | 22 ++++++++++++ .../server/rest/DimensionController.java | 9 +++++ .../server/service/DimensionService.java | 3 ++ .../service/impl/DimensionServiceImpl.java | 36 +++++++++++++++++++ 4 files changed, 70 insertions(+) create mode 100644 headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/DimValueAliasReq.java diff --git a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/DimValueAliasReq.java b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/DimValueAliasReq.java new file mode 100644 index 000000000..1b187b7aa --- /dev/null +++ b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/DimValueAliasReq.java @@ -0,0 +1,22 @@ +package com.tencent.supersonic.headless.api.pojo.request; + +import javax.validation.constraints.NotNull; + +import com.tencent.supersonic.headless.api.pojo.DimValueMap; +import lombok.Data; + +/** + * @author: kanedai + * @date: 2024/10/31 + */ +@Data +public class DimValueAliasReq { + + @NotNull + private Long id; + + /** + * alias为空代表删除 否则更新 + */ + DimValueMap dimValueMaps; +} diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/rest/DimensionController.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/rest/DimensionController.java index 68961b8d8..a5bc8d87d 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/rest/DimensionController.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/rest/DimensionController.java @@ -10,6 +10,7 @@ import com.tencent.supersonic.common.pojo.User; import com.tencent.supersonic.common.pojo.enums.SensitiveLevelEnum; import com.tencent.supersonic.headless.api.pojo.DimValueMap; import com.tencent.supersonic.headless.api.pojo.MetaFilter; +import com.tencent.supersonic.headless.api.pojo.request.DimValueAliasReq; import com.tencent.supersonic.headless.api.pojo.request.DimensionReq; import com.tencent.supersonic.headless.api.pojo.request.DimensionValueReq; import com.tencent.supersonic.headless.api.pojo.request.MetaBatchReq; @@ -60,6 +61,14 @@ public class DimensionController { return true; } + @PostMapping("/updateDimension/alias/value") + public Boolean updateDimValueAlias(@RequestBody DimValueAliasReq req, + HttpServletRequest request, HttpServletResponse response) { + User user = UserHolder.findUser(request, response); + dimensionService.updateDimValueAlias(req, user); + return true; + } + @PostMapping("/batchUpdateStatus") public Boolean batchUpdateStatus(@RequestBody MetaBatchReq metaBatchReq, HttpServletRequest request, HttpServletResponse response) { diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/DimensionService.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/DimensionService.java index c5cf70ae7..b79413b64 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/DimensionService.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/DimensionService.java @@ -6,6 +6,7 @@ import com.tencent.supersonic.common.pojo.User; import com.tencent.supersonic.common.pojo.enums.EventType; import com.tencent.supersonic.headless.api.pojo.DimValueMap; import com.tencent.supersonic.headless.api.pojo.MetaFilter; +import com.tencent.supersonic.headless.api.pojo.request.DimValueAliasReq; import com.tencent.supersonic.headless.api.pojo.request.DimensionReq; import com.tencent.supersonic.headless.api.pojo.request.MetaBatchReq; import com.tencent.supersonic.headless.api.pojo.request.PageDimensionReq; @@ -47,4 +48,6 @@ public interface DimensionService { void sendDimensionEventBatch(List modelIds, EventType eventType); DataEvent getDataEvent(); + + Boolean updateDimValueAlias(DimValueAliasReq req, User user); } diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DimensionServiceImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DimensionServiceImpl.java index 3905afaca..002a365b2 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DimensionServiceImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DimensionServiceImpl.java @@ -16,10 +16,12 @@ import com.tencent.supersonic.common.pojo.enums.EventType; import com.tencent.supersonic.common.pojo.enums.StatusEnum; import com.tencent.supersonic.common.pojo.enums.TypeEnums; import com.tencent.supersonic.common.pojo.exception.InvalidArgumentException; +import com.tencent.supersonic.common.util.JsonUtil; import com.tencent.supersonic.headless.api.pojo.DimValueMap; import com.tencent.supersonic.headless.api.pojo.MetaFilter; import com.tencent.supersonic.headless.api.pojo.ModelDetail; import com.tencent.supersonic.headless.api.pojo.enums.ModelDefineType; +import com.tencent.supersonic.headless.api.pojo.request.DimValueAliasReq; import com.tencent.supersonic.headless.api.pojo.request.DimensionReq; import com.tencent.supersonic.headless.api.pojo.request.MetaBatchReq; import com.tencent.supersonic.headless.api.pojo.request.PageDimensionReq; @@ -428,6 +430,40 @@ public class DimensionServiceImpl extends ServiceImpl dimValueMapList = new ArrayList<>(); + if (StringUtils.isNotEmpty(dimensionDO.getDimValueMaps())) { + dimValueMapList = JsonUtil.toList(dimensionDO.getDimValueMaps(), DimValueMap.class); + } + DimValueMap dimValueMaps = req.getDimValueMaps(); + Map valeAndMapInfo = dimValueMapList.stream() + .collect(Collectors.toMap(DimValueMap::getValue, v -> v, (v1, v2) -> v2)); + String value = dimValueMaps.getValue(); + if (CollectionUtils.isEmpty(dimValueMaps.getAlias())) { + // 删除 + dimValueMapList = + dimValueMapList.stream().filter(map -> !map.getValue().equalsIgnoreCase(value)) + .collect(Collectors.toList()); + } else { + // 新增 + if (!valeAndMapInfo.keySet().contains(value)) { + dimValueMapList.add(dimValueMaps); + } else { + // 更新 + dimValueMapList.stream().forEach(map -> { + if (map.getValue().equalsIgnoreCase(value)) { + map.setAlias(dimValueMaps.getAlias()); + } + }); + } + } + dimensionDO.setDimValueMaps(JsonUtil.toString(dimValueMapList)); + updateById(dimensionDO); + return true; + } + private DataEvent getDataEvent(List dimensionDOS, EventType eventType) { List dataItems = dimensionDOS.stream() .map(dimensionDO -> DataItem.builder().id(dimensionDO.getId() + Constants.UNDERLINE)