From af0fe6d1b18623f462bd1684a4b69d7302f1ce06 Mon Sep 17 00:00:00 2001 From: LXW <1264174498@qq.com> Date: Fri, 28 Jun 2024 21:07:32 +0800 Subject: [PATCH] (improvement)(headless) Batch Update dimension sensitiveLevel (#1275) Co-authored-by: lxwcodemonkey --- .../chat/server/executor/SqlExecutor.java | 3 +++ .../server/web/rest/DimensionController.java | 9 +++++++ .../server/web/service/DimensionService.java | 2 ++ .../service/impl/DimensionServiceImpl.java | 24 +++++++++++++++---- .../src/main/resources/db/schema-mysql.sql | 8 +++---- 5 files changed, 38 insertions(+), 8 deletions(-) diff --git a/chat/server/src/main/java/com/tencent/supersonic/chat/server/executor/SqlExecutor.java b/chat/server/src/main/java/com/tencent/supersonic/chat/server/executor/SqlExecutor.java index a9c9fb4e6..9e372ef6a 100644 --- a/chat/server/src/main/java/com/tencent/supersonic/chat/server/executor/SqlExecutor.java +++ b/chat/server/src/main/java/com/tencent/supersonic/chat/server/executor/SqlExecutor.java @@ -14,6 +14,7 @@ import com.tencent.supersonic.headless.chat.query.llm.s2sql.LLMSqlQuery; import com.tencent.supersonic.headless.server.facade.service.ChatQueryService; import lombok.SneakyThrows; import org.apache.commons.lang3.StringUtils; +import java.util.Date; public class SqlExecutor implements ChatExecutor { @@ -37,6 +38,8 @@ public class SqlExecutor implements ChatExecutor { .question(chatExecuteContext.getQueryText()) .s2sql(chatExecuteContext.getParseInfo().getSqlInfo().getS2SQL()) .dbSchema(buildSchemaStr(chatExecuteContext.getParseInfo())) + .createdBy(chatExecuteContext.getUser().getName()) + .createdAt(new Date()) .build()); } } diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/web/rest/DimensionController.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/web/rest/DimensionController.java index 2b63bd97a..bbe300916 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/web/rest/DimensionController.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/web/rest/DimensionController.java @@ -72,6 +72,15 @@ public class DimensionController { return true; } + @PostMapping("/batchUpdateSensitiveLevel") + public Boolean batchUpdateSensitiveLevel(@RequestBody MetaBatchReq metaBatchReq, + HttpServletRequest request, + HttpServletResponse response) { + User user = UserHolder.findUser(request, response); + dimensionService.batchUpdateSensitiveLevel(metaBatchReq, user); + return true; + } + @PostMapping("/mockDimensionAlias") public List mockMetricAlias(@RequestBody DimensionReq dimensionReq, HttpServletRequest request, diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/web/service/DimensionService.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/web/service/DimensionService.java index f24c7c955..bb7702b0c 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/web/service/DimensionService.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/web/service/DimensionService.java @@ -34,6 +34,8 @@ public interface DimensionService { List queryDimensions(DimensionsFilter dimensionsFilter); + void batchUpdateSensitiveLevel(MetaBatchReq metaBatchReq, User user); + void deleteDimension(Long id, User user); List getDimensionInModelCluster(Long modelId); diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/web/service/impl/DimensionServiceImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/web/service/impl/DimensionServiceImpl.java index d7b342b3e..6ef965eaf 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/web/service/impl/DimensionServiceImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/web/service/impl/DimensionServiceImpl.java @@ -3,6 +3,7 @@ package com.tencent.supersonic.headless.server.web.service.impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.TypeReference; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.google.common.collect.Lists; @@ -15,7 +16,6 @@ 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.headless.server.utils.AliasGenerateHelper; import com.tencent.supersonic.headless.api.pojo.DimValueMap; import com.tencent.supersonic.headless.api.pojo.ModelDetail; import com.tencent.supersonic.headless.api.pojo.enums.TagDefineType; @@ -30,20 +30,22 @@ import com.tencent.supersonic.headless.api.pojo.response.SemanticQueryResp; import com.tencent.supersonic.headless.api.pojo.response.TagItem; import com.tencent.supersonic.headless.server.persistence.dataobject.DimensionDO; import com.tencent.supersonic.headless.server.persistence.dataobject.TagDO; +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.MetaFilter; import com.tencent.supersonic.headless.server.pojo.ModelFilter; import com.tencent.supersonic.headless.server.pojo.TagFilter; +import com.tencent.supersonic.headless.server.utils.AliasGenerateHelper; +import com.tencent.supersonic.headless.server.utils.DimensionConverter; +import com.tencent.supersonic.headless.server.utils.NameCheckUtils; import com.tencent.supersonic.headless.server.web.service.DataSetService; import com.tencent.supersonic.headless.server.web.service.DatabaseService; import com.tencent.supersonic.headless.server.web.service.DimensionService; import com.tencent.supersonic.headless.server.web.service.ModelRelaService; import com.tencent.supersonic.headless.server.web.service.ModelService; import com.tencent.supersonic.headless.server.web.service.TagMetaService; -import com.tencent.supersonic.headless.server.utils.DimensionConverter; -import com.tencent.supersonic.headless.server.utils.NameCheckUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; @@ -62,7 +64,8 @@ import java.util.stream.Collectors; @Service @Slf4j -public class DimensionServiceImpl implements DimensionService { +public class DimensionServiceImpl extends ServiceImpl + implements DimensionService { private DimensionRepository dimensionRepository; @@ -177,6 +180,19 @@ public class DimensionServiceImpl implements DimensionService { } } + @Override + public void batchUpdateSensitiveLevel(MetaBatchReq metaBatchReq, User user) { + DimensionFilter metaFilter = new DimensionFilter(); + metaFilter.setIds(metaBatchReq.getIds()); + List dimensionDOS = queryDimension(metaFilter); + for (DimensionDO dimensionDO : dimensionDOS) { + dimensionDO.setUpdatedAt(new Date()); + dimensionDO.setUpdatedBy(user.getName()); + dimensionDO.setSensitiveLevel(metaBatchReq.getSensitiveLevel()); + } + updateBatchById(dimensionDOS); + } + @Override public void deleteDimension(Long id, User user) { DimensionDO dimensionDO = dimensionRepository.getDimensionById(id); diff --git a/launchers/standalone/src/main/resources/db/schema-mysql.sql b/launchers/standalone/src/main/resources/db/schema-mysql.sql index c90e916f6..bf1e9fd7a 100644 --- a/launchers/standalone/src/main/resources/db/schema-mysql.sql +++ b/launchers/standalone/src/main/resources/db/schema-mysql.sql @@ -147,10 +147,10 @@ CREATE TABLE IF NOT EXISTS `s2_chat_memory` ( `llm_comment` TEXT COMMENT '大模型评估意见' , `human_review` char(10) COMMENT '管理员评估结果', `human_comment` TEXT COMMENT '管理员评估意见', - `created_at` datetime NOT NULL , - `updated_at` datetime NOT NULL , - `created_by` varchar(100) NOT NULL , - `updated_by` varchar(100) NOT NULL , + `created_at` datetime DEFAULT NULL , + `updated_at` datetime DEFAULT NULL , + `created_by` varchar(100) DEFAULT NULL , + `updated_by` varchar(100) DEFAULT NULL , PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;