package com.qianwen.core.scanner.modular.service; import cn.hutool.core.util.StrUtil; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; import com.qianwen.core.scanner.config.properties.ScannerProperties; import com.qianwen.core.scanner.modular.factory.ApiResourceFactory; import com.qianwen.core.scanner.modular.model.ResourceDefinition; import com.qianwen.core.scanner.modular.model.ResourceTreeNode; public class ResourceCollectService { public static final String APP_CODE_PREFIX = "appType-"; public static final String CONTROLLER_CODE_PREFIX = "conType-"; public static final String RESOURCE_CODE_PREFIX = "resType-"; private ApiResourceFactory apiResourceFactory; private ScannerProperties scannerProperties; public ResourceCollectService(ApiResourceFactory apiResourceFactory, ScannerProperties scannerProperties) { this.apiResourceFactory = apiResourceFactory; this.scannerProperties = scannerProperties; } public List getAllAppResourceList(String code, String resourceName) { if (StrUtil.isBlank(code)) { List result = this.apiResourceFactory.getAllResources(); return findResource(resourceName, result); } List result2 = null; if (code.startsWith(APP_CODE_PREFIX)) { result2 = this.apiResourceFactory.getAllResources(); } else if (code.startsWith(CONTROLLER_CODE_PREFIX)) { result2 = this.apiResourceFactory.getResourcesByModularCode(code.replace(CONTROLLER_CODE_PREFIX, "")); } else if (code.startsWith(RESOURCE_CODE_PREFIX)) { ResourceDefinition resourceDefinitions = this.apiResourceFactory.getResource(code.replace(CONTROLLER_CODE_PREFIX, "")); result2 = Arrays.asList(resourceDefinitions); } return findResource(resourceName, result2); } public List getResourceTree() { ArrayList resourceTreeNodes = new ArrayList<>(); ResourceTreeNode appResources = new ResourceTreeNode(); appResources.setName(this.scannerProperties.getAppName()); appResources.setCode(APP_CODE_PREFIX + this.scannerProperties.getAppCode()); appResources.setChildren(new ArrayList()); Map> modularResources = this.apiResourceFactory.getModularResources(); for (String modularCode : modularResources.keySet()) { ArrayList modularResourceTreeNode = new ArrayList<>(); Map stringResourceDefinitionMap = modularResources.get(modularCode); for (Map.Entry entry : stringResourceDefinitionMap.entrySet()) { ResourceDefinition value = entry.getValue(); modularResourceTreeNode.add(new ResourceTreeNode(value.getName(), RESOURCE_CODE_PREFIX + value.getCode())); } appResources.getChildren().add(new ResourceTreeNode(this.apiResourceFactory.getResourceName(modularCode), CONTROLLER_CODE_PREFIX + modularCode, modularResourceTreeNode)); } resourceTreeNodes.add(appResources); return resourceTreeNodes; } private List findResource(String resourceName, List resourceDefinitions) { if (StrUtil.isBlank(resourceName)) { return resourceDefinitions; } for (ResourceDefinition resourceDefinition : resourceDefinitions) { if (resourceDefinition.getName().equals(resourceName)) { return Arrays.asList(resourceDefinition); } } return null; } }