diff --git a/docker-compose.yml b/docker-compose.yml index 0c57830b2..a2a3bc64f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -14,8 +14,6 @@ services: restart: always container_name: pigx-mysql image: pigx-mysql - ports: - - 3306:3306 volumes: - ./pigx-mysql:/var/lib/mysql command: --lower_case_table_names=1 @@ -24,8 +22,6 @@ services: container_name: pigx-redis image: redis:6.2.6 restart: always - ports: - - 6379:6379 pigx-register: build: 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; diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysTenantServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysTenantServiceImpl.java index d094ce313..28344a9fb 100755 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysTenantServiceImpl.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysTenantServiceImpl.java @@ -26,6 +26,7 @@ import com.pig4cloud.pigx.admin.service.*; import com.pig4cloud.pigx.common.core.constant.CacheConstants; import com.pig4cloud.pigx.common.core.constant.CommonConstants; import com.pig4cloud.pigx.common.core.util.SpringContextHolder; +import com.pig4cloud.pigx.common.data.datascope.DataScopeTypeEnum; import com.pig4cloud.pigx.common.data.resolver.ParamResolver; import com.pig4cloud.pigx.common.data.tenant.TenantBroker; import lombok.AllArgsConstructor; @@ -117,9 +118,9 @@ public class SysTenantServiceImpl extends ServiceImpl dictList = new ArrayList<>(32); List dictIdList = new ArrayList<>(32); List dictItemList = new ArrayList<>(64); - List menuList = new ArrayList<>(128); List clientDetailsList = new ArrayList<>(16); List publicParamList = new ArrayList<>(64); + List menuList = new ArrayList<>(); TenantBroker.runAs(defaultId, (id) -> { // 查询系统内置字典 @@ -128,12 +129,16 @@ public class SysTenantServiceImpl extends ServiceImpllambdaQuery().in(SysDictItem::getDictId, dictIdList))); - // 查询当前租户菜单 - menuList.addAll(menuService.list()); // 查询客户端配置 clientDetailsList.addAll(clientServices.list()); // 查询系统参数配置 publicParamList.addAll(paramService.list()); + + SysTenantMenu tenantMenu = sysTenantMenuService.getById(sysTenant.getMenuId()); + String[] split = tenantMenu.getMenuIds().split(","); + List newMenuList = menuService + .list(Wrappers.lambdaQuery().in(SysMenu::getMenuId,split)); + menuList.addAll(newMenuList); }); // 保证插入租户为新的租户 @@ -157,12 +162,14 @@ public class SysTenantServiceImpl extends ServiceImpl newMenuList = menuService - .list(Wrappers.lambdaQuery().in(SysMenu::getMenuId, tenantMenu.getMenuIds())); + // 重新查询出所有的菜单关联角色 + List list = menuService.list(); // 查询全部菜单,构造角色菜单关系 - List roleMenuList = newMenuList.stream().map(menu -> { + List roleMenuList = list.stream().map(menu -> { SysRoleMenu roleMenu = new SysRoleMenu(); roleMenu.setRoleId(role.getRoleId()); roleMenu.setMenuId(menu.getMenuId());