[feature](headless)Add request user to data events.

[feature](headless)Add request user to data events.
This commit is contained in:
jerryjzhang
2025-10-21 23:28:42 +08:00
parent 7490dabdc3
commit d695bed75d
6 changed files with 156 additions and 89 deletions

View File

@@ -1,27 +1,26 @@
package com.tencent.supersonic.common.pojo;
import com.tencent.supersonic.common.pojo.enums.EventType;
import lombok.Getter;
import org.springframework.context.ApplicationEvent;
import java.util.List;
@Getter
public class DataEvent extends ApplicationEvent {
private List<DataItem> dataItems;
private final List<DataItem> dataItems;
private EventType eventType;
private final EventType eventType;
public DataEvent(Object source, List<DataItem> dataItems, EventType eventType) {
private final String userName;
public DataEvent(Object source, List<DataItem> dataItems, EventType eventType,
String userName) {
super(source);
this.dataItems = dataItems;
this.eventType = eventType;
this.userName = userName;
}
public List<DataItem> getDataItems() {
return dataItems;
}
public EventType getEventType() {
return eventType;
}
}

View File

@@ -52,7 +52,7 @@ public interface DimensionService {
List<DimValueMap> mockDimensionValueAlias(DimensionReq dimensionReq, User user);
void sendDimensionEventBatch(List<Long> modelIds, EventType eventType);
void sendDimensionEventBatch(List<Long> modelIds, EventType eventType, User user);
DataEvent getAllDataEvents();

View File

@@ -70,7 +70,7 @@ public interface MetricService {
MetricQueryDefaultConfig getMetricQueryDefaultConfig(Long metricId, User user);
void sendMetricEventBatch(List<Long> modelIds, EventType eventType);
void sendMetricEventBatch(List<Long> modelIds, EventType eventType, User user);
List<MetricResp> queryMetrics(MetricsFilter metricsFilter);

View File

@@ -8,7 +8,10 @@ import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
import com.tencent.supersonic.common.pojo.*;
import com.tencent.supersonic.common.pojo.DataEvent;
import com.tencent.supersonic.common.pojo.DataItem;
import com.tencent.supersonic.common.pojo.ModelRela;
import com.tencent.supersonic.common.pojo.User;
import com.tencent.supersonic.common.pojo.enums.EventType;
import com.tencent.supersonic.common.pojo.enums.StatusEnum;
import com.tencent.supersonic.common.pojo.enums.TypeEnums;
@@ -22,14 +25,22 @@ 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;
import com.tencent.supersonic.headless.api.pojo.response.*;
import com.tencent.supersonic.headless.api.pojo.response.DataSetResp;
import com.tencent.supersonic.headless.api.pojo.response.DatabaseResp;
import com.tencent.supersonic.headless.api.pojo.response.DimensionResp;
import com.tencent.supersonic.headless.api.pojo.response.ModelResp;
import com.tencent.supersonic.headless.api.pojo.response.SemanticQueryResp;
import com.tencent.supersonic.headless.server.persistence.dataobject.DimensionDO;
import com.tencent.supersonic.headless.server.persistence.mapper.DimensionDOMapper;
import com.tencent.supersonic.headless.server.persistence.repository.DimensionRepository;
import com.tencent.supersonic.headless.server.pojo.DimensionFilter;
import com.tencent.supersonic.headless.server.pojo.DimensionsFilter;
import com.tencent.supersonic.headless.server.pojo.ModelFilter;
import com.tencent.supersonic.headless.server.service.*;
import com.tencent.supersonic.headless.server.service.DataSetService;
import com.tencent.supersonic.headless.server.service.DatabaseService;
import com.tencent.supersonic.headless.server.service.DimensionService;
import com.tencent.supersonic.headless.server.service.ModelRelaService;
import com.tencent.supersonic.headless.server.service.ModelService;
import com.tencent.supersonic.headless.server.utils.AliasGenerateHelper;
import com.tencent.supersonic.headless.server.utils.DimensionConverter;
import com.tencent.supersonic.headless.server.utils.NameCheckUtils;
@@ -37,12 +48,16 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
@Service
@@ -50,31 +65,31 @@ import java.util.stream.Collectors;
public class DimensionServiceImpl extends ServiceImpl<DimensionDOMapper, DimensionDO>
implements DimensionService {
private DimensionRepository dimensionRepository;
private final DimensionRepository dimensionRepository;
private ModelService modelService;
private final ModelService modelService;
private AliasGenerateHelper aliasGenerateHelper;
private final AliasGenerateHelper aliasGenerateHelper;
private DatabaseService databaseService;
private final DatabaseService databaseService;
private ModelRelaService modelRelaService;
private final ModelRelaService modelRelaService;
private DataSetService dataSetService;
private final DataSetService dataSetService;
@Autowired
private ApplicationEventPublisher eventPublisher;
private final ApplicationEventPublisher eventPublisher;
public DimensionServiceImpl(DimensionRepository dimensionRepository, ModelService modelService,
AliasGenerateHelper aliasGenerateHelper, DatabaseService databaseService,
ModelRelaService modelRelaService, DataSetService dataSetService) {
ModelRelaService modelRelaService, DataSetService dataSetService,
ApplicationEventPublisher eventPublisher) {
this.modelService = modelService;
this.dimensionRepository = dimensionRepository;
this.aliasGenerateHelper = aliasGenerateHelper;
this.databaseService = databaseService;
this.modelRelaService = modelRelaService;
this.dataSetService = dataSetService;
this.eventPublisher = eventPublisher;
}
@Override
@@ -83,7 +98,7 @@ public class DimensionServiceImpl extends ServiceImpl<DimensionDOMapper, Dimensi
dimensionReq.createdBy(user.getName());
DimensionDO dimensionDO = DimensionConverter.convert2DimensionDO(dimensionReq);
dimensionRepository.createDimension(dimensionDO);
sendEventBatch(Lists.newArrayList(dimensionDO), EventType.ADD);
sendEventBatch(Lists.newArrayList(dimensionDO), EventType.ADD, user);
// should update modelDetail
modelService.updateModelByDimAndMetric(dimensionReq.getModelId(),
@@ -154,7 +169,7 @@ public class DimensionServiceImpl extends ServiceImpl<DimensionDOMapper, Dimensi
modelService.updateModelByDimAndMetric(dimensionReqs.get(0).getModelId(), dimensionReqs,
null, user);
sendEventBatch(dimensionDOS, EventType.ADD);
sendEventBatch(dimensionDOS, EventType.ADD, user);
}
@Override
@@ -170,7 +185,7 @@ public class DimensionServiceImpl extends ServiceImpl<DimensionDOMapper, Dimensi
Lists.newArrayList(dimensionReq), null, user);
if (!oldName.equals(dimensionDO.getName())) {
sendEvent(getDataItem(dimensionDO), EventType.UPDATE);
sendEvent(getDataItem(dimensionDO), EventType.UPDATE, user.getName());
}
}
@@ -183,7 +198,7 @@ public class DimensionServiceImpl extends ServiceImpl<DimensionDOMapper, Dimensi
// should update modelDetail as well
modelService.updateModelByDimAndMetric(dimensionReqList.get(0).getModelId(),
dimensionReqList, null, user);
sendEventBatch(dimensionDOS, EventType.UPDATE);
sendEventBatch(dimensionDOS, EventType.UPDATE, user);
}
@Override
@@ -205,9 +220,9 @@ public class DimensionServiceImpl extends ServiceImpl<DimensionDOMapper, Dimensi
dimensionRepository.batchUpdateStatus(dimensionDOS);
if (StatusEnum.OFFLINE.getCode().equals(metaBatchReq.getStatus())
|| StatusEnum.DELETED.getCode().equals(metaBatchReq.getStatus())) {
sendEventBatch(dimensionDOS, EventType.DELETE);
sendEventBatch(dimensionDOS, EventType.DELETE, user);
} else if (StatusEnum.ONLINE.getCode().equals(metaBatchReq.getStatus())) {
sendEventBatch(dimensionDOS, EventType.ADD);
sendEventBatch(dimensionDOS, EventType.ADD, user);
}
}
@@ -240,7 +255,7 @@ public class DimensionServiceImpl extends ServiceImpl<DimensionDOMapper, Dimensi
// should update modelDetail
modelService.deleteModelDetailByDimAndMetric(dimensionDO.getModelId(),
Lists.newArrayList(dimensionDO), null);
sendEventBatch(Lists.newArrayList(dimensionDO), EventType.DELETE);
sendEventBatch(Lists.newArrayList(dimensionDO), EventType.DELETE, user);
}
@Override
@@ -261,7 +276,7 @@ public class DimensionServiceImpl extends ServiceImpl<DimensionDOMapper, Dimensi
// should update modelDetail
modelService.deleteModelDetailByDimAndMetric(dimensionDOList.get(0).getModelId(),
dimensionDOList, null);
sendEventBatch(dimensionDOList, EventType.DELETE);
sendEventBatch(dimensionDOList, EventType.DELETE, user);
}
@Override
@@ -462,22 +477,22 @@ public class DimensionServiceImpl extends ServiceImpl<DimensionDOMapper, Dimensi
}
@Override
public void sendDimensionEventBatch(List<Long> modelIds, EventType eventType) {
public void sendDimensionEventBatch(List<Long> modelIds, EventType eventType, User user) {
DimensionFilter dimensionFilter = new DimensionFilter();
dimensionFilter.setModelIds(modelIds);
List<DimensionDO> dimensionDOS = queryDimension(dimensionFilter);
sendEventBatch(dimensionDOS, eventType);
sendEventBatch(dimensionDOS, eventType, user);
}
private void sendEventBatch(List<DimensionDO> dimensionDOS, EventType eventType) {
DataEvent dataEvent = getDataEvent(dimensionDOS, eventType);
private void sendEventBatch(List<DimensionDO> dimensionDOS, EventType eventType, User user) {
DataEvent dataEvent = getDataEvent(dimensionDOS, eventType, user.getName());
eventPublisher.publishEvent(dataEvent);
}
public DataEvent getAllDataEvents() {
DimensionFilter dimensionFilter = new DimensionFilter();
List<DimensionDO> dimensionDOS = queryDimension(dimensionFilter);
return getDataEvent(dimensionDOS, EventType.ADD);
return getDataEvent(dimensionDOS, EventType.ADD, "");
}
@Override
@@ -529,14 +544,16 @@ public class DimensionServiceImpl extends ServiceImpl<DimensionDOMapper, Dimensi
.domainId(dimensionResp.getDomainId().toString()).type(TypeEnums.DIMENSION).build();
}
private DataEvent getDataEvent(List<DimensionDO> dimensionDOS, EventType eventType) {
private DataEvent getDataEvent(List<DimensionDO> dimensionDOS, EventType eventType,
String userName) {
List<DataItem> dataItems = dimensionDOS.stream().map(this::getDataItem)
.filter(Objects::nonNull).collect(Collectors.toList());
return new DataEvent(this, dataItems, eventType);
return new DataEvent(this, dataItems, eventType, userName);
}
private void sendEvent(DataItem dataItem, EventType eventType) {
eventPublisher.publishEvent(new DataEvent(this, Lists.newArrayList(dataItem), eventType));
private void sendEvent(DataItem dataItem, EventType eventType, String userName) {
eventPublisher.publishEvent(
new DataEvent(this, Lists.newArrayList(dataItem), eventType, userName));
}
private boolean isChange(DimensionReq dimensionReq, DimensionResp dimensionResp) {

View File

@@ -8,23 +8,61 @@ import com.github.pagehelper.PageInfo;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import com.tencent.supersonic.common.pojo.*;
import com.tencent.supersonic.common.pojo.enums.*;
import com.tencent.supersonic.common.pojo.Aggregator;
import com.tencent.supersonic.common.pojo.DataEvent;
import com.tencent.supersonic.common.pojo.DataItem;
import com.tencent.supersonic.common.pojo.DateConf;
import com.tencent.supersonic.common.pojo.Filter;
import com.tencent.supersonic.common.pojo.User;
import com.tencent.supersonic.common.pojo.enums.AuthType;
import com.tencent.supersonic.common.pojo.enums.EventType;
import com.tencent.supersonic.common.pojo.enums.QueryType;
import com.tencent.supersonic.common.pojo.enums.StatusEnum;
import com.tencent.supersonic.common.pojo.enums.TypeEnums;
import com.tencent.supersonic.common.util.BeanMapper;
import com.tencent.supersonic.common.util.JsonUtil;
import com.tencent.supersonic.headless.api.pojo.*;
import com.tencent.supersonic.headless.api.pojo.enums.DimensionType;
import com.tencent.supersonic.headless.api.pojo.DrillDownDimension;
import com.tencent.supersonic.headless.api.pojo.Measure;
import com.tencent.supersonic.headless.api.pojo.MetaFilter;
import com.tencent.supersonic.headless.api.pojo.MetricParam;
import com.tencent.supersonic.headless.api.pojo.MetricQueryDefaultConfig;
import com.tencent.supersonic.headless.api.pojo.SchemaElementMatch;
import com.tencent.supersonic.headless.api.pojo.SchemaElementType;
import com.tencent.supersonic.headless.api.pojo.SchemaItem;
import com.tencent.supersonic.headless.api.pojo.enums.MapModeEnum;
import com.tencent.supersonic.headless.api.pojo.enums.MetricDefineType;
import com.tencent.supersonic.headless.api.pojo.request.*;
import com.tencent.supersonic.headless.api.pojo.response.*;
import com.tencent.supersonic.headless.api.pojo.request.MetaBatchReq;
import com.tencent.supersonic.headless.api.pojo.request.MetricBaseReq;
import com.tencent.supersonic.headless.api.pojo.request.MetricReq;
import com.tencent.supersonic.headless.api.pojo.request.PageMetricReq;
import com.tencent.supersonic.headless.api.pojo.request.QueryMapReq;
import com.tencent.supersonic.headless.api.pojo.request.QueryMetricReq;
import com.tencent.supersonic.headless.api.pojo.request.QueryStructReq;
import com.tencent.supersonic.headless.api.pojo.response.DataSetMapInfo;
import com.tencent.supersonic.headless.api.pojo.response.DataSetResp;
import com.tencent.supersonic.headless.api.pojo.response.DimensionResp;
import com.tencent.supersonic.headless.api.pojo.response.MapInfoResp;
import com.tencent.supersonic.headless.api.pojo.response.MetricResp;
import com.tencent.supersonic.headless.api.pojo.response.ModelResp;
import com.tencent.supersonic.headless.server.facade.service.ChatLayerService;
import com.tencent.supersonic.headless.server.persistence.dataobject.*;
import com.tencent.supersonic.headless.server.persistence.dataobject.CollectDO;
import com.tencent.supersonic.headless.server.persistence.dataobject.MetricDO;
import com.tencent.supersonic.headless.server.persistence.dataobject.MetricQueryDefaultConfigDO;
import com.tencent.supersonic.headless.server.persistence.mapper.MetricDOMapper;
import com.tencent.supersonic.headless.server.persistence.repository.MetricRepository;
import com.tencent.supersonic.headless.server.pojo.*;
import com.tencent.supersonic.headless.server.service.*;
import com.tencent.supersonic.headless.server.utils.*;
import com.tencent.supersonic.headless.server.pojo.DimensionsFilter;
import com.tencent.supersonic.headless.server.pojo.MetricFilter;
import com.tencent.supersonic.headless.server.pojo.MetricsFilter;
import com.tencent.supersonic.headless.server.pojo.ModelCluster;
import com.tencent.supersonic.headless.server.pojo.ModelFilter;
import com.tencent.supersonic.headless.server.service.CollectService;
import com.tencent.supersonic.headless.server.service.DataSetService;
import com.tencent.supersonic.headless.server.service.DimensionService;
import com.tencent.supersonic.headless.server.service.MetricService;
import com.tencent.supersonic.headless.server.service.ModelService;
import com.tencent.supersonic.headless.server.utils.AliasGenerateHelper;
import com.tencent.supersonic.headless.server.utils.MetricCheckUtils;
import com.tencent.supersonic.headless.server.utils.MetricConverter;
import com.tencent.supersonic.headless.server.utils.ModelClusterBuilder;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
@@ -33,7 +71,18 @@ import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
@Service
@@ -41,21 +90,21 @@ import java.util.stream.Collectors;
public class MetricServiceImpl extends ServiceImpl<MetricDOMapper, MetricDO>
implements MetricService {
private MetricRepository metricRepository;
private final MetricRepository metricRepository;
private ModelService modelService;
private final ModelService modelService;
private DimensionService dimensionService;
private final DimensionService dimensionService;
private AliasGenerateHelper aliasGenerateHelper;
private final AliasGenerateHelper aliasGenerateHelper;
private CollectService collectService;
private final CollectService collectService;
private DataSetService dataSetService;
private final DataSetService dataSetService;
private ApplicationEventPublisher eventPublisher;
private final ApplicationEventPublisher eventPublisher;
private ChatLayerService chatLayerService;
private final ChatLayerService chatLayerService;
public MetricServiceImpl(MetricRepository metricRepository, ModelService modelService,
AliasGenerateHelper aliasGenerateHelper, CollectService collectService,
@@ -78,7 +127,7 @@ public class MetricServiceImpl extends ServiceImpl<MetricDOMapper, MetricDO>
metricReq.createdBy(user.getName());
MetricDO metricDO = MetricConverter.convert2MetricDO(metricReq);
metricRepository.createMetric(metricDO);
sendEventBatch(Lists.newArrayList(metricDO), EventType.ADD);
sendEventBatch(Lists.newArrayList(metricDO), EventType.ADD, user);
// should update modelDetail as well
modelService.updateModelByDimAndMetric(metricReq.getModelId(), null,
Lists.newArrayList(metricReq), user);
@@ -97,7 +146,7 @@ public class MetricServiceImpl extends ServiceImpl<MetricDOMapper, MetricDO>
modelService.updateModelByDimAndMetric(metricReqs.get(0).getModelId(), null, metricReqs,
user);
sendEventBatch(metricDOS, EventType.ADD);
sendEventBatch(metricDOS, EventType.ADD, user);
}
@Override
@@ -163,7 +212,7 @@ public class MetricServiceImpl extends ServiceImpl<MetricDOMapper, MetricDO>
DataItem dataItem = getDataItem(metricDO);
dataItem.setName(oldName);
dataItem.setNewName(metricDO.getName());
sendEvent(dataItem, EventType.UPDATE);
sendEvent(dataItem, EventType.UPDATE, user);
}
// should update modelDetail as well
modelService.updateModelByDimAndMetric(metricReq.getModelId(), null,
@@ -181,7 +230,7 @@ public class MetricServiceImpl extends ServiceImpl<MetricDOMapper, MetricDO>
// should update modelDetail as well
modelService.updateModelByDimAndMetric(metricReqs.get(0).getModelId(), null, metricReqs,
user);
sendEventBatch(metricDOS, EventType.UPDATE);
sendEventBatch(metricDOS, EventType.UPDATE, user);
}
@@ -202,9 +251,9 @@ public class MetricServiceImpl extends ServiceImpl<MetricDOMapper, MetricDO>
metricRepository.batchUpdateStatus(metricDOS);
if (StatusEnum.OFFLINE.getCode().equals(metaBatchReq.getStatus())
|| StatusEnum.DELETED.getCode().equals(metaBatchReq.getStatus())) {
sendEventBatch(metricDOS, EventType.DELETE);
sendEventBatch(metricDOS, EventType.DELETE, user);
} else if (StatusEnum.ONLINE.getCode().equals(metaBatchReq.getStatus())) {
sendEventBatch(metricDOS, EventType.ADD);
sendEventBatch(metricDOS, EventType.ADD, user);
}
}
@@ -285,7 +334,7 @@ public class MetricServiceImpl extends ServiceImpl<MetricDOMapper, MetricDO>
// should update modelDetail
modelService.deleteModelDetailByDimAndMetric(metricDO.getModelId(), null,
Lists.newArrayList(metricDO));
sendEventBatch(Lists.newArrayList(metricDO), EventType.DELETE);
sendEventBatch(Lists.newArrayList(metricDO), EventType.DELETE, user);
}
@Override
@@ -306,7 +355,7 @@ public class MetricServiceImpl extends ServiceImpl<MetricDOMapper, MetricDO>
// should update modelDetail
modelService.deleteModelDetailByDimAndMetric(metricDOList.get(0).getModelId(), null,
metricDOList);
sendEventBatch(metricDOList, EventType.DELETE);
sendEventBatch(metricDOList, EventType.DELETE, user);
}
@Override
@@ -661,11 +710,11 @@ public class MetricServiceImpl extends ServiceImpl<MetricDOMapper, MetricDO>
}
@Override
public void sendMetricEventBatch(List<Long> modelIds, EventType eventType) {
public void sendMetricEventBatch(List<Long> modelIds, EventType eventType, User user) {
MetricFilter metricFilter = new MetricFilter();
metricFilter.setModelIds(modelIds);
List<MetricDO> metricDOS = queryMetric(metricFilter);
sendEventBatch(metricDOS, eventType);
sendEventBatch(metricDOS, eventType, user);
}
@Override
@@ -678,22 +727,23 @@ public class MetricServiceImpl extends ServiceImpl<MetricDOMapper, MetricDO>
public DataEvent getDataEvent() {
MetricsFilter metricsFilter = new MetricsFilter();
List<MetricDO> metricDOS = metricRepository.getMetrics(metricsFilter);
return getDataEvent(metricDOS, EventType.ADD);
return getDataEvent(metricDOS, EventType.ADD, User.getDefaultUser());
}
private DataEvent getDataEvent(List<MetricDO> metricDOS, EventType eventType) {
private DataEvent getDataEvent(List<MetricDO> metricDOS, EventType eventType, User user) {
List<DataItem> dataItems = metricDOS.stream().map(this::getDataItem)
.filter(Objects::nonNull).collect(Collectors.toList());
return new DataEvent(this, dataItems, eventType);
return new DataEvent(this, dataItems, eventType, user.getName());
}
private void sendEventBatch(List<MetricDO> metricDOS, EventType eventType) {
DataEvent dataEvent = getDataEvent(metricDOS, eventType);
private void sendEventBatch(List<MetricDO> metricDOS, EventType eventType, User user) {
DataEvent dataEvent = getDataEvent(metricDOS, eventType, user);
eventPublisher.publishEvent(dataEvent);
}
private void sendEvent(DataItem dataItem, EventType eventType) {
eventPublisher.publishEvent(new DataEvent(this, Lists.newArrayList(dataItem), eventType));
private void sendEvent(DataItem dataItem, EventType eventType, User user) {
eventPublisher.publishEvent(
new DataEvent(this, Lists.newArrayList(dataItem), eventType, user.getName()));
}
private DataItem getDataItem(MetricDO metricDO) {

View File

@@ -95,7 +95,7 @@ public class ModelServiceImpl implements ModelService {
// create or update metric
List<MetricReq> metricReqs = ModelConverter.convertMetricList(modelDO);
metricService.alterMetricBatch(metricReqs, modelDO.getId(), user);
sendEvent(modelDO, EventType.ADD);
sendEvent(modelDO, EventType.ADD, user);
return ModelConverter.convert(modelDO);
}
@@ -129,7 +129,7 @@ public class ModelServiceImpl implements ModelService {
// create or update metric
List<MetricReq> metricReqs = ModelConverter.convertMetricList(modelDO);
metricService.alterMetricBatch(metricReqs, modelDO.getId(), user);
sendEvent(modelDO, EventType.UPDATE);
sendEvent(modelDO, EventType.UPDATE, user);
return ModelConverter.convert(modelDO);
}
@@ -507,14 +507,14 @@ public class ModelServiceImpl implements ModelService {
if (StatusEnum.OFFLINE.getCode().equals(metaBatchReq.getStatus())
|| StatusEnum.DELETED.getCode().equals(metaBatchReq.getStatus())) {
metricService.sendMetricEventBatch(Lists.newArrayList(modelDO.getId()),
EventType.DELETE);
EventType.DELETE, user);
dimensionService.sendDimensionEventBatch(Lists.newArrayList(modelDO.getId()),
EventType.DELETE);
EventType.DELETE, user);
} else if (StatusEnum.ONLINE.getCode().equals(metaBatchReq.getStatus())) {
metricService.sendMetricEventBatch(Lists.newArrayList(modelDO.getId()),
EventType.ADD);
EventType.ADD, user);
dimensionService.sendDimensionEventBatch(Lists.newArrayList(modelDO.getId()),
EventType.ADD);
EventType.ADD, user);
}
}).collect(Collectors.toList());
modelRepository.batchUpdate(modelDOS);
@@ -670,9 +670,10 @@ public class ModelServiceImpl implements ModelService {
return false;
}
private void sendEvent(ModelDO modelDO, EventType eventType) {
private void sendEvent(ModelDO modelDO, EventType eventType, User user) {
DataItem dataItem = getDataItem(modelDO);
eventPublisher.publishEvent(new DataEvent(this, Lists.newArrayList(dataItem), eventType));
eventPublisher.publishEvent(
new DataEvent(this, Lists.newArrayList(dataItem), eventType, user.getName()));
}
private DataItem getDataItem(ModelDO modelDO) {