diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/RuleServiceImpl.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/RuleServiceImpl.java index 0e903a943be2..dabcc4fe1081 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/RuleServiceImpl.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/RuleServiceImpl.java @@ -67,6 +67,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; +import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Objects; @@ -112,12 +113,26 @@ public void doConditionPreProcessing(final RuleQueryCondition condition) { } } + @Override public PageInfo searchByPage(final PageCondition pageCondition) { RuleQueryCondition condition = pageCondition.getCondition(); doConditionPreProcessing(condition); - PageHelper.startPage(pageCondition.getPageNum(), pageCondition.getPageSize()); condition.init(); + List namespaceSelectors = Optional.ofNullable(selectorMapper.selectAllByNamespaceId(condition.getNamespaceId())) + .map(list -> list.stream().map(SelectorDO::getId).collect(Collectors.toList())) + .orElse(Collections.emptyList()); + + List finalSelectors = Optional.ofNullable(condition.getSelectors()) + .orElseGet(Collections::emptyList); + + if (!namespaceSelectors.isEmpty()) { + Set selectorSet = new LinkedHashSet<>(finalSelectors); + selectorSet.addAll(namespaceSelectors); + finalSelectors = new ArrayList<>(selectorSet); + } + condition.setSelectors(finalSelectors); + PageHelper.startPage(pageCondition.getPageNum(), pageCondition.getPageSize()); final Page doList = CastUtils.cast(ruleMapper.selectByCondition(condition)); PageInfo doPageInfo = doList.toPageInfo(RuleVO::buildRuleVO); for (RuleVO rule : doPageInfo.getList()) { @@ -253,12 +268,12 @@ public List listAllByNamespaceId(final String namespaceId) { public List listAllData() { return this.buildRuleVOList(ruleMapper.selectAll()); } - + @Override public List listAllDataByNamespaceId(final String namespaceId) { return this.buildRuleVOList(ruleMapper.selectAllByNamespaceId(namespaceId)); } - + @Override public List findBySelectorId(final String selectorId) { return this.buildRuleDataList(ruleMapper.findBySelectorId(selectorId)); @@ -322,7 +337,7 @@ public ConfigImportResult importData(final List ruleList) { } return ConfigImportResult.success(successCount); } - + @Override @Transactional(rollbackFor = Exception.class) public ConfigImportResult importData(final String namespace, final List ruleList, final ConfigsImportContext context) { @@ -334,7 +349,7 @@ public ConfigImportResult importData(final String namespace, final List .selectAllByNamespaceId(namespace) .stream() .collect(Collectors.groupingBy(RuleDO::getSelectorId)); - + int successCount = 0; StringBuilder errorMsgBuilder = new StringBuilder(); for (RuleDTO ruleDTO : ruleList) { @@ -353,7 +368,7 @@ public ConfigImportResult importData(final String namespace, final List .stream() .map(RuleDO::getRuleName) .collect(Collectors.toSet()); - + if (existRuleNameSet.contains(ruleName)) { errorMsgBuilder .append(ruleName) @@ -367,10 +382,10 @@ public ConfigImportResult importData(final String namespace, final List RuleDO ruleDO = RuleDO.buildRuleDO(ruleDTO); final int ruleCount = ruleMapper.insertSelective(ruleDO); Optional.ofNullable(ruleDTO.getRuleConditions()) - .orElse(Collections.emptyList()).forEach(c -> { - c.setRuleId(ruleId); - c.setId(null); - }); + .orElse(Collections.emptyList()).forEach(c -> { + c.setRuleId(ruleId); + c.setId(null); + }); addCondition(ruleDO, ruleDTO.getRuleConditions()); if (ruleCount > 0) { successCount++; diff --git a/shenyu-admin/src/main/resources/mappers/rule-sqlmap.xml b/shenyu-admin/src/main/resources/mappers/rule-sqlmap.xml index 56cccb983a7e..3c250a09eb7c 100644 --- a/shenyu-admin/src/main/resources/mappers/rule-sqlmap.xml +++ b/shenyu-admin/src/main/resources/mappers/rule-sqlmap.xml @@ -193,7 +193,6 @@ -