From bf685c72777a49703621d9368835e1d091068be6 Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期四, 28 九月 2023 17:28:01 +0800 Subject: [PATCH] 修改GeoServer代理服务-2 --- src/main/java/com/moon/server/service/sys/ProxyService.java | 7 ++++--- src/main/java/com/moon/server/helper/HttpHelper.java | 15 ++++++++++----- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/moon/server/helper/HttpHelper.java b/src/main/java/com/moon/server/helper/HttpHelper.java index 001a069..bc2bda9 100644 --- a/src/main/java/com/moon/server/helper/HttpHelper.java +++ b/src/main/java/com/moon/server/helper/HttpHelper.java @@ -297,16 +297,21 @@ int index = str.indexOf(StaticData.QUERYABLE); while (index > -1) { - int start = str.indexOf("<Name>", index) + StaticData.I6; int end = str.indexOf("</Layer>", index) + StaticData.I8; + int nameStart = str.indexOf("<Name>", index); + int nameEnd = str.indexOf("</Name>", nameStart); - String name = ":" + str.substring(start, str.indexOf("</Name>", start)); - if (!res.getTab().contains(name)) { + String name = ":" + str.substring(nameStart + StaticData.I6, nameEnd); + int idx = res.getTab().indexOf(name); + if (idx > -1) { + int preIdx = res.getTab().lastIndexOf(",", idx) + 1; + String prefix = res.getTab().substring(preIdx, idx); + str = str.substring(0, nameStart + StaticData.I6) + prefix + name + str.substring(nameEnd); + index = str.indexOf(StaticData.QUERYABLE, end); + } else { end = str.indexOf("<", end); str = str.substring(0, index) + str.substring(end); index = str.indexOf(StaticData.QUERYABLE, index); - } else { - index = str.indexOf(StaticData.QUERYABLE, end); } } diff --git a/src/main/java/com/moon/server/service/sys/ProxyService.java b/src/main/java/com/moon/server/service/sys/ProxyService.java index 3c75c64..2d097d8 100644 --- a/src/main/java/com/moon/server/service/sys/ProxyService.java +++ b/src/main/java/com/moon/server/service/sys/ProxyService.java @@ -247,14 +247,15 @@ String str = req.getQueryString(); boolean isLower = str.contains(StaticData.SERVICE); - String layers = req.getParameter(isLower ? StaticData.LAYERS : StaticData.LAYERS.toUpperCase()); + String layersKey = isLower ? StaticData.LAYERS : StaticData.LAYERS.toUpperCase(); + String layers = req.getParameter(layersKey); String request = req.getParameter(isLower ? StaticData.REQUEST : StaticData.REQUEST.toUpperCase()); if (!StaticData.GET_CAPABILITIES.equals(request) && null != layers) { - int start = str.indexOf("layers"); + int start = str.indexOf(layersKey); int end = str.indexOf("&", start); layers = filterGeoLayers(ue, layers); - str = str.replace(str.substring(start, end > -1 ? end : str.length()), "layers=" + layers); + str = str.replace(str.substring(start, end > -1 ? end : str.length()), layersKey + "=" + layers); } else { List<String> tabs = StaticData.ADMIN.equals(ue.getUid()) ? permsService.selectAllTabs() : permsService.selectTabs(ue.getUid()); entity.setTab(null == tabs ? "" : StringHelper.join(tabs, ",")); -- Gitblit v1.9.3