From 73b0664d2a2e23d8ba5a2b80f501b393b8220349 Mon Sep 17 00:00:00 2001 From: aeizzz <1129603149@qq.com> Date: Mon, 26 Dec 2022 17:36:06 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20Introducing=20new=20features.=20?= =?UTF-8?q?=E8=A6=86=E7=9B=96nacos=E5=AE=98=E6=96=B9=E5=8E=86=E5=8F=B2?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E6=9F=A5=E8=AF=A2=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 数据库插件是oracle时 查询出空数据对比错误 --- .../config/server/service/HistoryService.java | 85 +++++++++++++++++++ .../config/server/service/package-info.java | 4 + 2 files changed, 89 insertions(+) create mode 100644 pigx-register/src/main/java/com/alibaba/nacos/config/server/service/HistoryService.java create mode 100644 pigx-register/src/main/java/com/alibaba/nacos/config/server/service/package-info.java diff --git a/pigx-register/src/main/java/com/alibaba/nacos/config/server/service/HistoryService.java b/pigx-register/src/main/java/com/alibaba/nacos/config/server/service/HistoryService.java new file mode 100644 index 000000000..3e3c5cb6b --- /dev/null +++ b/pigx-register/src/main/java/com/alibaba/nacos/config/server/service/HistoryService.java @@ -0,0 +1,85 @@ +package com.alibaba.nacos.config.server.service; + +import cn.hutool.core.util.StrUtil; +import com.alibaba.nacos.common.utils.Pair; +import com.alibaba.nacos.config.server.model.ConfigHistoryInfo; +import com.alibaba.nacos.config.server.model.ConfigInfoWrapper; +import com.alibaba.nacos.config.server.model.Page; +import com.alibaba.nacos.config.server.service.repository.ConfigInfoPersistService; +import com.alibaba.nacos.config.server.service.repository.HistoryConfigInfoPersistService; +import com.alibaba.nacos.plugin.auth.exception.AccessException; +import com.alibaba.nacos.plugin.encryption.handler.EncryptionHandler; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +@Service +public class HistoryService { + + private final HistoryConfigInfoPersistService historyConfigInfoPersistService; + + private final ConfigInfoPersistService configInfoPersistService; + + public HistoryService(HistoryConfigInfoPersistService historyConfigInfoPersistService, + ConfigInfoPersistService configInfoPersistService) { + this.historyConfigInfoPersistService = historyConfigInfoPersistService; + this.configInfoPersistService = configInfoPersistService; + } + + public Page listConfigHistory(String dataId, String group, String namespaceId, Integer pageNo, + Integer pageSize) { + return this.historyConfigInfoPersistService.findConfigHistory(dataId, group, namespaceId, pageNo, pageSize); + } + + public ConfigHistoryInfo getConfigHistoryInfo(String dataId, String group, String namespaceId, Long nid) + throws AccessException { + ConfigHistoryInfo configHistoryInfo = this.historyConfigInfoPersistService.detailConfigHistory(nid); + if (Objects.isNull(configHistoryInfo)) { + return null; + } + else { + this.checkHistoryInfoPermission(configHistoryInfo, dataId, group, namespaceId); + String encryptedDataKey = configHistoryInfo.getEncryptedDataKey(); + Pair pair = EncryptionHandler.decryptHandler(dataId, encryptedDataKey, + configHistoryInfo.getContent()); + configHistoryInfo.setContent((String) pair.getSecond()); + return configHistoryInfo; + } + } + + public ConfigHistoryInfo getPreviousConfigHistoryInfo(String dataId, String group, String namespaceId, Long id) + throws AccessException { + ConfigHistoryInfo configHistoryInfo = this.historyConfigInfoPersistService.detailPreviousConfigHistory(id); + if (Objects.isNull(configHistoryInfo)) { + return null; + } + else { + this.checkHistoryInfoPermission(configHistoryInfo, dataId, group, namespaceId); + return configHistoryInfo; + } + } + + public List getConfigListByNamespace(String namespaceId) { + return this.configInfoPersistService.queryConfigInfoByNamespace(namespaceId); + } + + /** + * 覆盖原有的校验方式,oracle 数据库没有空 字符串 只有 null + * @param configHistoryInfo + * @param dataId + * @param group + * @param namespaceId + * @throws AccessException + */ + private void checkHistoryInfoPermission(ConfigHistoryInfo configHistoryInfo, String dataId, String group, + String namespaceId) throws AccessException { + if (!Objects.equals(configHistoryInfo.getDataId(), dataId) + || !Objects.equals(configHistoryInfo.getGroup(), group) + || (!StrUtil.isEmpty(configHistoryInfo.getTenant()) + && !Objects.equals(configHistoryInfo.getTenant(), namespaceId))) { + throw new AccessException("Please check dataId, group or namespaceId."); + } + } + +} diff --git a/pigx-register/src/main/java/com/alibaba/nacos/config/server/service/package-info.java b/pigx-register/src/main/java/com/alibaba/nacos/config/server/service/package-info.java new file mode 100644 index 000000000..d3c747a1d --- /dev/null +++ b/pigx-register/src/main/java/com/alibaba/nacos/config/server/service/package-info.java @@ -0,0 +1,4 @@ +/** + * 处理再oracle数据库下空置的判断 + */ +package com.alibaba.nacos.config.server.service;