From 46e268333829c19e416c787cce11e3f1cda1480e Mon Sep 17 00:00:00 2001 From: LXW <1264174498@qq.com> Date: Mon, 27 May 2024 20:49:34 +0800 Subject: [PATCH] (improvement)(Headless) Support model batch update status (#1035) --- .../server/service/impl/ModelServiceImpl.java | 31 ++++++------------- .../server/service/impl/TermServiceImpl.java | 6 ++++ .../mapper/custom/ModelDOCustomMapper.xml | 16 ++++++++++ 3 files changed, 32 insertions(+), 21 deletions(-) create mode 100644 headless/server/src/main/resources/mapper/custom/ModelDOCustomMapper.xml diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/ModelServiceImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/ModelServiceImpl.java index 90d7e865d..ed3225225 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/ModelServiceImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/ModelServiceImpl.java @@ -114,32 +114,13 @@ public class ModelServiceImpl implements ModelService { public ModelResp updateModel(ModelReq modelReq, User user) throws Exception { checkName(modelReq); ModelDO modelDO = modelRepository.getModelById(modelReq.getId()); - int oldStatus = modelDO.getStatus(); ModelConverter.convert(modelDO, modelReq, user); modelRepository.updateModel(modelDO); batchCreateDimension(modelDO, user); batchCreateMetric(modelDO, user); - statusPublish(oldStatus, modelDO); return ModelConverter.convert(modelDO); } - private void statusPublish(Integer oldStatus, ModelDO modelDO) { - if (oldStatus.equals(modelDO.getStatus())) { - return; - } - EventType eventType = null; - if (oldStatus.equals(StatusEnum.ONLINE.getCode()) - && modelDO.getStatus().equals(StatusEnum.OFFLINE.getCode())) { - eventType = EventType.DELETE; - } else if (oldStatus.equals(StatusEnum.OFFLINE.getCode()) - && modelDO.getStatus().equals(StatusEnum.ONLINE.getCode())) { - eventType = EventType.ADD; - } - log.info("model:{} status from {} to {}", modelDO.getId(), oldStatus, modelDO.getStatus()); - metricService.sendMetricEventBatch(Lists.newArrayList(modelDO.getId()), eventType); - dimensionService.sendDimensionEventBatch(Lists.newArrayList(modelDO.getId()), eventType); - } - @Override public List getModelList(MetaFilter metaFilter) { ModelFilter modelFilter = new ModelFilter(); @@ -342,7 +323,7 @@ public class ModelServiceImpl implements ModelService { } if (authTypeEnum.equals(AuthType.VISIBLE)) { modelWithAuth = modelResps.stream() - .filter(domainResp -> checkDataSeterPermission(orgIds, user, domainResp)) + .filter(domainResp -> checkDataSetPermission(orgIds, user, domainResp)) .collect(Collectors.toList()); } return modelWithAuth; @@ -429,6 +410,14 @@ public class ModelServiceImpl implements ModelService { modelDO.setStatus(metaBatchReq.getStatus()); modelDO.setUpdatedAt(new Date()); modelDO.setUpdatedBy(user.getName()); + if (StatusEnum.OFFLINE.getCode().equals(metaBatchReq.getStatus()) + || StatusEnum.DELETED.getCode().equals(metaBatchReq.getStatus())) { + metricService.sendMetricEventBatch(Lists.newArrayList(modelDO.getId()), EventType.DELETE); + dimensionService.sendDimensionEventBatch(Lists.newArrayList(modelDO.getId()), EventType.DELETE); + } else if (StatusEnum.ONLINE.getCode().equals(metaBatchReq.getStatus())) { + metricService.sendMetricEventBatch(Lists.newArrayList(modelDO.getId()), EventType.ADD); + dimensionService.sendDimensionEventBatch(Lists.newArrayList(modelDO.getId()), EventType.ADD); + } }) .collect(Collectors.toList()); modelRepository.batchUpdate(modelDOS); @@ -470,7 +459,7 @@ public class ModelServiceImpl implements ModelService { return false; } - public static boolean checkDataSeterPermission(Set orgIds, User user, ModelResp modelResp) { + public static boolean checkDataSetPermission(Set orgIds, User user, ModelResp modelResp) { if (checkAdminPermission(orgIds, user, modelResp)) { return true; } diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/TermServiceImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/TermServiceImpl.java index 654d3d49e..c1ef4b77f 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/TermServiceImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/TermServiceImpl.java @@ -11,6 +11,9 @@ import com.tencent.supersonic.headless.server.persistence.dataobject.TermDO; import com.tencent.supersonic.headless.server.persistence.mapper.TermMapper; import com.tencent.supersonic.headless.server.service.TermService; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; @@ -50,6 +53,9 @@ public class TermServiceImpl extends ServiceImpl implements @Override public Map> getTermSets(Set domainIds) { + if (CollectionUtils.isEmpty(domainIds)) { + return new HashMap<>(); + } QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().in(TermDO::getDomainId, domainIds); List list = list(queryWrapper); diff --git a/headless/server/src/main/resources/mapper/custom/ModelDOCustomMapper.xml b/headless/server/src/main/resources/mapper/custom/ModelDOCustomMapper.xml new file mode 100644 index 000000000..ec5091830 --- /dev/null +++ b/headless/server/src/main/resources/mapper/custom/ModelDOCustomMapper.xml @@ -0,0 +1,16 @@ + + + + + + + update s2_model + set status = #{model.status,jdbcType=INTEGER}, + updated_at = #{model.updatedAt,jdbcType=TIMESTAMP}, + updated_by = #{model.updatedBy,jdbcType=VARCHAR} + where id = #{model.id,jdbcType=BIGINT} + + + +