(improvement)(knowledge) support DimValueAliasReq single (#1871)

This commit is contained in:
daikon
2024-10-31 23:52:31 +08:00
committed by GitHub
parent 0cb1faaf53
commit 4c929d59a8
4 changed files with 70 additions and 0 deletions

View File

@@ -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;
}

View File

@@ -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) {

View File

@@ -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<Long> modelIds, EventType eventType);
DataEvent getDataEvent();
Boolean updateDimValueAlias(DimValueAliasReq req, User user);
}

View File

@@ -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<DimensionDOMapper, Dimensi
return getDataEvent(dimensionDOS, EventType.ADD);
}
@Override
public Boolean updateDimValueAlias(DimValueAliasReq req, User user) {
DimensionDO dimensionDO = getById(req.getId());
List<DimValueMap> dimValueMapList = new ArrayList<>();
if (StringUtils.isNotEmpty(dimensionDO.getDimValueMaps())) {
dimValueMapList = JsonUtil.toList(dimensionDO.getDimValueMaps(), DimValueMap.class);
}
DimValueMap dimValueMaps = req.getDimValueMaps();
Map<String, DimValueMap> 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<DimensionDO> dimensionDOS, EventType eventType) {
List<DataItem> dataItems = dimensionDOS.stream()
.map(dimensionDO -> DataItem.builder().id(dimensionDO.getId() + Constants.UNDERLINE)