diff --git a/sdk/common/pom.xml b/sdk/common/pom.xml
index 7a41874..82f24fb 100644
--- a/sdk/common/pom.xml
+++ b/sdk/common/pom.xml
@@ -5,7 +5,7 @@
sdk
io.gisbi
- 1.0.0
+ 2.0.0
4.0.0
diff --git a/sdk/common/src/main/java/io/gisbi/auth/config/SubstituleLoginConfig.java b/sdk/common/src/main/java/io/gisbi/auth/config/SubstituleLoginConfig.java
index 9d51ffa..8beb5d9 100644
--- a/sdk/common/src/main/java/io/gisbi/auth/config/SubstituleLoginConfig.java
+++ b/sdk/common/src/main/java/io/gisbi/auth/config/SubstituleLoginConfig.java
@@ -38,8 +38,7 @@ public class SubstituleLoginConfig {
pwd = CommonBeanFactory.getBean(Environment.class).getProperty("gisbi.default-pwd", "Gisbi@123456");
modifyPwd(pwd);
}
- Map map=objectMapper.readValue(jsonFile, Map.class);
- return map;
+ return objectMapper.readValue(jsonFile, Map.class);
}
public static String getPwd() {
diff --git a/sdk/common/src/main/java/io/gisbi/auth/filter/CommunityTokenFilter.java b/sdk/common/src/main/java/io/gisbi/auth/filter/CommunityTokenFilter.java
index e8e2fc8..90bc040 100644
--- a/sdk/common/src/main/java/io/gisbi/auth/filter/CommunityTokenFilter.java
+++ b/sdk/common/src/main/java/io/gisbi/auth/filter/CommunityTokenFilter.java
@@ -60,6 +60,7 @@ public class CommunityTokenFilter implements Filter {
String msg = URLEncoder.encode(e.getMessage(), StandardCharsets.UTF_8).replace("+", "%20");
headers.add(headName, msg);
sendResponseEntity(res, new ResponseEntity<>(e.getMessage(), headers, HttpStatus.UNAUTHORIZED));
+ return;
}
}
diff --git a/sdk/common/src/main/java/io/gisbi/auth/interceptor/CorsConfig.java b/sdk/common/src/main/java/io/gisbi/auth/interceptor/CorsConfig.java
index 817b492..da1907d 100644
--- a/sdk/common/src/main/java/io/gisbi/auth/interceptor/CorsConfig.java
+++ b/sdk/common/src/main/java/io/gisbi/auth/interceptor/CorsConfig.java
@@ -15,18 +15,18 @@ import java.util.List;
@Configuration
public class CorsConfig implements WebMvcConfigurer {
- @Value("${dataease.cors-strict:false}")
+ @Value("${gisbi.cors-strict:false}")
private boolean corsStrict;
- @Value("#{'${dataease.origin-list:http://127.0.0.1:8100}'.split(',')}")
+ @Value("#{'${gisbi.origin-list:http://127.0.0.1:8100}'.split(',')}")
private List originList;
private CorsRegistration operateCorsRegistration;
@Override
public void configurePathMatch(PathMatchConfigurer configurer) {
- configurer.addPathPrefix(AuthConstant.DE_API_PREFIX, c -> c.isAnnotationPresent(RestController.class) && c.getPackageName().startsWith("io.dataease"));
+ configurer.addPathPrefix(AuthConstant.DE_API_PREFIX, c -> c.isAnnotationPresent(RestController.class) && c.getPackageName().startsWith("io.gisbi"));
}
@Override
diff --git a/sdk/common/src/main/java/io/gisbi/constant/CommonConstants.java b/sdk/common/src/main/java/io/gisbi/constant/CommonConstants.java
index 6ef9277..70b1979 100644
--- a/sdk/common/src/main/java/io/gisbi/constant/CommonConstants.java
+++ b/sdk/common/src/main/java/io/gisbi/constant/CommonConstants.java
@@ -88,4 +88,22 @@ public class CommonConstants {
//公共
public static final String PUBLIC = "public";
}
+
+ public static final class RESOURCE_TABLE {
+ //主表
+ public static final String CORE = "core";
+ //镜像表
+ public static final String SNAPSHOT = "snapshot";
+ }
+
+
+ public static final class DV_STATUS {
+ //未发布
+ public static final int UNPUBLISHED = 0;
+ //已发布
+ public static final int PUBLISHED = 1;
+ //已保存未发布
+ public static final int SAVED_UNPUBLISHED = 2;
+ }
+
}
diff --git a/sdk/common/src/main/java/io/gisbi/constant/LogOT.java b/sdk/common/src/main/java/io/gisbi/constant/LogOT.java
index 7dde77e..1b3d1e5 100644
--- a/sdk/common/src/main/java/io/gisbi/constant/LogOT.java
+++ b/sdk/common/src/main/java/io/gisbi/constant/LogOT.java
@@ -16,7 +16,8 @@ public enum LogOT {
UPLOADFILE(11, "OPERATE_TYPE_UPLOADFILE"),
BIND(12, "OPERATE_TYPE_BIND"),
UNBIND(13, "OPERATE_TYPE_UNBIND"),
- LOGIN(14, "OPERATE_TYPE_LOGIN");
+ LOGIN(14, "OPERATE_TYPE_LOGIN"),
+ DOWNLOAD(15, "OPERATE_TYPE_DOWNLOAD");
private Integer value;
private String name;
diff --git a/sdk/common/src/main/java/io/gisbi/constant/LogST.java b/sdk/common/src/main/java/io/gisbi/constant/LogST.java
index e7eddbd..91b0530 100644
--- a/sdk/common/src/main/java/io/gisbi/constant/LogST.java
+++ b/sdk/common/src/main/java/io/gisbi/constant/LogST.java
@@ -16,7 +16,8 @@ public enum LogST {
DRIVER_FILE(11, "SOURCE_TYPE_DRIVER_FILE"),
MENU(12, "SOURCE_TYPE_MENU"),
APIKEY(13, "SOURCE_TYPE_APIKEY"),
- DATA_FILLING(14, "SOURCE_TYPE_DATAFILLING");
+ DATA_FILLING(14, "SOURCE_TYPE_DATAFILLING"),
+ DATA(15, "SOURCE_TYPE_DATA");
private Integer value;
private String name;
diff --git a/sdk/common/src/main/java/io/gisbi/constant/StaticResourceConstants.java b/sdk/common/src/main/java/io/gisbi/constant/StaticResourceConstants.java
index 932cd92..2f1bf85 100644
--- a/sdk/common/src/main/java/io/gisbi/constant/StaticResourceConstants.java
+++ b/sdk/common/src/main/java/io/gisbi/constant/StaticResourceConstants.java
@@ -41,9 +41,9 @@ public class StaticResourceConstants {
public static String getHomeData() {
if (ModelUtils.isDesktop()) {
- return ConfigUtils.getConfig("gisbi.path.data", "/opt/gisbi/data");
+ return ConfigUtils.getConfig("gisbi.path.data", "/opt/gisbi2.0/data");
} else {
- return "/opt/gisbi/data";
+ return "/opt/gisbi2.0/data";
}
}
}
diff --git a/sdk/common/src/main/java/io/gisbi/doc/SwaggerConfig.java b/sdk/common/src/main/java/io/gisbi/doc/SwaggerConfig.java
index 754d5f7..62544ba 100644
--- a/sdk/common/src/main/java/io/gisbi/doc/SwaggerConfig.java
+++ b/sdk/common/src/main/java/io/gisbi/doc/SwaggerConfig.java
@@ -16,7 +16,7 @@ import java.util.Map;
@Configuration
public class SwaggerConfig {
- @Value("1.0.0")
+ @Value("2.0.0")
private String version;
@Bean
@@ -47,46 +47,46 @@ public class SwaggerConfig {
@Bean
public GroupedOpenApi visualizationApi() {
- return GroupedOpenApi.builder().group("1-visualization").displayName("可视化管理").packagesToScan("io.dataease.visualization", "io.dataease.share").build();
+ return GroupedOpenApi.builder().group("1-visualization").displayName("可视化管理").packagesToScan("io.gisbi.visualization", "io.gisbi.share").build();
}
@Bean
public GroupedOpenApi chartApi() {
- return GroupedOpenApi.builder().group("2-view").displayName("图表管理").packagesToScan("io.dataease.chart").build();
+ return GroupedOpenApi.builder().group("2-view").displayName("图表管理").packagesToScan("io.gisbi.chart").build();
}
@Bean
public GroupedOpenApi datasetApi() {
- return GroupedOpenApi.builder().group("3-dataset").displayName("数据集管理").packagesToScan("io.dataease.dataset").build();
+ return GroupedOpenApi.builder().group("3-dataset").displayName("数据集管理").packagesToScan("io.gisbi.dataset").build();
}
@Bean
public GroupedOpenApi dsApi() {
- return GroupedOpenApi.builder().group("4-datasource").displayName("数据源管理").packagesToScan("io.dataease.datasource").build();
+ return GroupedOpenApi.builder().group("4-datasource").displayName("数据源管理").packagesToScan("io.gisbi.datasource").build();
}
@Bean
public GroupedOpenApi basicSettingApi() {
String[] packageArray = {
- "io.dataease.system",
- "io.dataease.map",
+ "io.gisbi.system",
+ "io.gisbi.map",
};
return GroupedOpenApi.builder().group("5-xpackpermission").displayName("系统设置").packagesToScan(packageArray).build();
}
@Bean
public GroupedOpenApi baseXpackApi() {
- return GroupedOpenApi.builder().group("6-xpackbase").displayName("基础xpack").packagesToScan("io.dataease.xpack.base").build();
+ return GroupedOpenApi.builder().group("6-xpackbase").displayName("基础xpack").packagesToScan("io.gisbi.xpack.base").build();
}
@Bean
public GroupedOpenApi systemApi() {
- return GroupedOpenApi.builder().group("7-xpackpermission").displayName("权限相关xpack").packagesToScan("io.dataease.xpack.permissions").build();
+ return GroupedOpenApi.builder().group("7-xpackpermission").displayName("权限相关xpack").packagesToScan("io.gisbi.xpack.permissions").build();
}
@Bean
public GroupedOpenApi syncApi() {
- return GroupedOpenApi.builder().group("8-xpacksync").displayName("同步管理").packagesToScan("io.dataease.xpack.sync.task").build();
+ return GroupedOpenApi.builder().group("8-xpacksync").displayName("同步管理").packagesToScan("io.gisbi.xpack.sync.task").build();
}
@Bean
diff --git a/sdk/common/src/main/java/io/gisbi/exception/GlobalExceptionHandler.java b/sdk/common/src/main/java/io/gisbi/exception/GlobalExceptionHandler.java
index d997585..eee91df 100644
--- a/sdk/common/src/main/java/io/gisbi/exception/GlobalExceptionHandler.java
+++ b/sdk/common/src/main/java/io/gisbi/exception/GlobalExceptionHandler.java
@@ -34,7 +34,7 @@ public class GlobalExceptionHandler {
public ResultMessage noUserExceptionHandler(Exception e) {
String message = e.getMessage();
LogUtil.error(message, e);
- if (StringUtils.contains(message, "Cannot invoke \"io.dataease.auth.bo.TokenUserBO.getUserId()\" because \"user\" is null")) {
+ if (StringUtils.contains(message, "Cannot invoke \"io.gisbi.auth.bo.TokenUserBO.getUserId()\" because \"user\" is null")) {
return new ResultMessage(ResultCode.USER_NOT_LOGGED_IN.code(), ResultCode.USER_NOT_LOGGED_IN.message());
}
return new ResultMessage(ResultCode.PARAM_IS_BLANK.code(), message);
diff --git a/sdk/common/src/main/java/io/gisbi/filter/HtmlResourceFilter.java b/sdk/common/src/main/java/io/gisbi/filter/HtmlResourceFilter.java
index 5b57568..46ca4eb 100644
--- a/sdk/common/src/main/java/io/gisbi/filter/HtmlResourceFilter.java
+++ b/sdk/common/src/main/java/io/gisbi/filter/HtmlResourceFilter.java
@@ -15,7 +15,7 @@ import java.io.IOException;
@Component
public class HtmlResourceFilter implements Filter, Ordered {
- @Value("${dataease.http.cache:false}")
+ @Value("${gisbi.http.cache:false}")
private Boolean httpCache;
@Override
diff --git a/sdk/common/src/main/java/io/gisbi/i18n/DeI18nStarter.java b/sdk/common/src/main/java/io/gisbi/i18n/DeI18nStarter.java
index 4a677be..132147b 100644
--- a/sdk/common/src/main/java/io/gisbi/i18n/DeI18nStarter.java
+++ b/sdk/common/src/main/java/io/gisbi/i18n/DeI18nStarter.java
@@ -10,7 +10,7 @@ import org.springframework.stereotype.Component;
@Order(1000)
public class DeI18nStarter implements ApplicationRunner {
- @Value("${dataease.path.i18n:file:/opt/dataease2.0/data/i18n/custom}")
+ @Value("${gisbi.path.i18n:file:/opt/gisbi2.0/data/i18n/custom}")
private String i18nPath;
@Override
diff --git a/sdk/common/src/main/java/io/gisbi/i18n/Lang.java b/sdk/common/src/main/java/io/gisbi/i18n/Lang.java
index 92572e5..cd5f0bc 100644
--- a/sdk/common/src/main/java/io/gisbi/i18n/Lang.java
+++ b/sdk/common/src/main/java/io/gisbi/i18n/Lang.java
@@ -1,8 +1,12 @@
package io.gisbi.i18n;
+import io.gisbi.utils.CacheUtils;
import lombok.Getter;
+import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
+import static io.gisbi.constant.CacheConstant.UserCacheConstant.USER_COMMUNITY_LANGUAGE;
+
@Getter
public enum Lang {
@@ -43,4 +47,20 @@ public enum Lang {
return null;
}
+ public static boolean isChinese() {
+ String lang = null;
+ Object langObj = CacheUtils.get(USER_COMMUNITY_LANGUAGE, "de");
+ if (ObjectUtils.isNotEmpty(langObj) && StringUtils.isNotBlank(langObj.toString())) {
+ lang = langObj.toString();
+ }
+
+ if (StringUtils.isBlank(lang)) {
+ return true;
+ }
+ if (StringUtils.startsWithIgnoreCase(lang, "zh")) {
+ return true;
+ }
+ return false;
+ }
+
}
diff --git a/sdk/common/src/main/java/io/gisbi/model/BusiNodeRequest.java b/sdk/common/src/main/java/io/gisbi/model/BusiNodeRequest.java
index 29dd8bc..3a774dd 100644
--- a/sdk/common/src/main/java/io/gisbi/model/BusiNodeRequest.java
+++ b/sdk/common/src/main/java/io/gisbi/model/BusiNodeRequest.java
@@ -14,11 +14,11 @@ public class BusiNodeRequest implements Serializable {
private String id;
- private String appId;
-
private Boolean leaf;
private Integer weight;
private String sortType;
+
+ private String resourceTable;
}
diff --git a/sdk/common/src/main/java/io/gisbi/model/BusiNodeVO.java b/sdk/common/src/main/java/io/gisbi/model/BusiNodeVO.java
index 90e4f75..6b164dc 100644
--- a/sdk/common/src/main/java/io/gisbi/model/BusiNodeVO.java
+++ b/sdk/common/src/main/java/io/gisbi/model/BusiNodeVO.java
@@ -30,6 +30,8 @@ public class BusiNodeVO implements TreeResultModel, Serializable {
private Integer weight;
@Schema(description = "额外标识")
private int extraFlag;
+ @Schema(description = "额外标识1")
+ private int extraFlag1;
@Schema(description = "类型")
private String type;
@Schema(description = "子节点")
diff --git a/sdk/common/src/main/java/io/gisbi/model/ExportTaskDTO.java b/sdk/common/src/main/java/io/gisbi/model/ExportTaskDTO.java
index e53ea31..8598f78 100644
--- a/sdk/common/src/main/java/io/gisbi/model/ExportTaskDTO.java
+++ b/sdk/common/src/main/java/io/gisbi/model/ExportTaskDTO.java
@@ -17,7 +17,7 @@ public class ExportTaskDTO {
private String fileSizeUnit;
- private String exportFrom;
+ private Long exportFrom;
private String exportStatus;
diff --git a/sdk/common/src/main/java/io/gisbi/traffic/DeTrafficAop.java b/sdk/common/src/main/java/io/gisbi/traffic/DeTrafficAop.java
index 82679f3..428b66b 100644
--- a/sdk/common/src/main/java/io/gisbi/traffic/DeTrafficAop.java
+++ b/sdk/common/src/main/java/io/gisbi/traffic/DeTrafficAop.java
@@ -22,12 +22,12 @@ public class DeTrafficAop {
@Resource
private CoreApiTrafficMapper coreApiTrafficMapper;
- @Value("${dataease.traffic:2}")
+ @Value("${gisbi.traffic:2}")
private Integer defaultTraffic;
final private static String errorMsg = "当前API【%s】设定并发阈值为【%s】,现已经达到限流阈值,请稍后再试!";
- @Around(value = "@annotation(io.dataease.traffic.DeTraffic)")
+ @Around(value = "@annotation(io.gisbi.traffic.DeTraffic)")
public Object trafficAround(ProceedingJoinPoint point) throws Throwable {
MethodSignature ms = (MethodSignature) point.getSignature();
Method method = ms.getMethod();
diff --git a/sdk/common/src/main/java/io/gisbi/utils/ConfigUtils.java b/sdk/common/src/main/java/io/gisbi/utils/ConfigUtils.java
index bed6acd..281d47c 100644
--- a/sdk/common/src/main/java/io/gisbi/utils/ConfigUtils.java
+++ b/sdk/common/src/main/java/io/gisbi/utils/ConfigUtils.java
@@ -12,7 +12,7 @@ import java.util.Objects;
*/
public class ConfigUtils {
- public static String configPath = "opt" + File.separator + "dataease2.0" + File.separator + "config" + File.separator + "application.yml";
+ public static String configPath = "opt" + File.separator + "gisbi2.0" + File.separator + "config" + File.separator + "application.yml";
public static String getConfig(String key, String defaultValue) {
try {
diff --git a/sdk/common/src/main/java/io/gisbi/utils/HttpClientUtil.java b/sdk/common/src/main/java/io/gisbi/utils/HttpClientUtil.java
index fd776aa..250a205 100644
--- a/sdk/common/src/main/java/io/gisbi/utils/HttpClientUtil.java
+++ b/sdk/common/src/main/java/io/gisbi/utils/HttpClientUtil.java
@@ -30,12 +30,11 @@ import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
+import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
+import java.net.URLDecoder;
+import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.security.cert.X509Certificate;
import java.util.*;
@@ -70,6 +69,7 @@ public class HttpClientUtil {
throw new DEException(SYSTEM_INNER_ERROR.code(), "HttpClient查询失败: " + e.getMessage());
}
}
+
private static CloseableHttpClient buildHttpClient(boolean ssl) {
try {
if (ssl) {
@@ -369,6 +369,71 @@ public class HttpClientUtil {
return EntityUtils.toString(response.getEntity(), config.getCharset());
}
+ public static Map downloadFile(String url, HttpClientConfig config, String path) {
+ String encodeUIl = url;
+ Map name = new HashMap<>();
+ if (!url.contains("%")) {
+ String[] http = url.split("://");
+ String[] server = http[1].split("/");
+ encodeUIl = http[0] + "://" + server[0] + "/" + URLEncoder.encode(http[1].substring(server[0].length() + 1, http[1].length()));
+ }
+ try (CloseableHttpClient httpClient = buildHttpClient(encodeUIl.replace("+", "%20"))) {
+ HttpGet httpGet = new HttpGet(encodeUIl.replace("+", "%20"));
+ // 设置请求配置
+ httpGet.setConfig(config.buildRequestConfig());
+ // 设置请求头
+ config.getHeader().forEach(httpGet::addHeader);
+ HttpResponse response = httpClient.execute(httpGet);
+ if (response.getStatusLine().getStatusCode() >= 400) {
+ String msg = EntityUtils.toString(response.getEntity(), config.getCharset());
+ if (StringUtils.isEmpty(msg)) {
+ msg = "StatusCode: " + response.getStatusLine().getStatusCode();
+ }
+ throw new Exception(msg);
+ }
+ String fileName = extractFileName(response, url);
+ String suffix = fileName.substring(fileName.lastIndexOf(".") + 1);
+ String tranName = UUID.randomUUID().toString() + "." + suffix;
+ name.put("fileName", fileName);
+ name.put("tranName", tranName);
+ File localFile = new File(path + tranName);
+ FileOutputStream outputStream = new FileOutputStream(localFile);
+ byte[] buffer = new byte[4096];
+ int bytesRead;
+ while ((bytesRead = response.getEntity().getContent().read(buffer)) != -1) {
+ outputStream.write(buffer, 0, bytesRead);
+ }
+ } catch (Exception e) {
+ logger.error("HttpClient查询失败", e);
+ throw new RuntimeException("HttpClient查询失败: " + e.getMessage(), e);
+ }
+ return name;
+ }
+
+ private static String extractFileName(HttpResponse response, String url) {
+ url = URLDecoder.decode(url);
+ String fileName = "";
+ String disposition = response.getHeaders("Content-Disposition").toString();
+ if (disposition != null) {
+ int filenameIndex = disposition.indexOf("filename=");
+ if (filenameIndex > 0) {
+ fileName = disposition.substring(filenameIndex + 9)
+ .replaceAll("\"", "") // 去除引号
+ .trim();
+ }
+ }
+ if (fileName.isEmpty()) {
+ url = url.split("\\?")[0];
+ fileName = url.contains("/")
+ ? url.substring(url.lastIndexOf('/') + 1)
+ : "download_" + System.currentTimeMillis();
+ }
+ if (fileName.trim().isEmpty()) {
+ fileName = "download_" + System.currentTimeMillis();
+ }
+ return fileName;
+ }
+
public static byte[] downloadBytes(String url) {
HttpClientConfig config = new HttpClientConfig();
return HttpClientUtil.downFromRemote(url, config);
@@ -383,7 +448,6 @@ public class HttpClientUtil {
// 设置请求头
config.getHeader().forEach(httpGet::addHeader);
HttpResponse response = httpClient.execute(httpGet);
-
try (InputStream inputStream = response.getEntity().getContent();
ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
diff --git a/sdk/common/src/main/java/io/gisbi/utils/IDUtils.java b/sdk/common/src/main/java/io/gisbi/utils/IDUtils.java
index 9474da1..e05c670 100644
--- a/sdk/common/src/main/java/io/gisbi/utils/IDUtils.java
+++ b/sdk/common/src/main/java/io/gisbi/utils/IDUtils.java
@@ -1,12 +1,21 @@
package io.gisbi.utils;
+import jakarta.annotation.Resource;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.RandomStringUtils;
+import org.springframework.stereotype.Component;
+@Component
public class IDUtils {
- private static SnowFlake snowFlake = new SnowFlake(1, 1);
+
+ private static SnowFlake snowFlake;
+
+ @Resource
+ public void setSnowFlake(SnowFlake snowFlake) {
+ IDUtils.snowFlake = snowFlake;
+ }
public static String randomID(Integer num) {
num = ObjectUtils.isEmpty(num) ? 16 : num;
diff --git a/sdk/common/src/main/java/io/gisbi/utils/JsonUtil.java b/sdk/common/src/main/java/io/gisbi/utils/JsonUtil.java
index efcdc2e..e212689 100644
--- a/sdk/common/src/main/java/io/gisbi/utils/JsonUtil.java
+++ b/sdk/common/src/main/java/io/gisbi/utils/JsonUtil.java
@@ -14,6 +14,7 @@ import java.util.List;
public class JsonUtil {
private static final ObjectMapper objectMapper;
+
static {
objectMapper = new ObjectMapper();
// 配置更大的 StreamReadConstraints 限制
@@ -47,6 +48,17 @@ public class JsonUtil {
return t;
}
+ public static T parseObject(String json, TypeReference typeReference) {
+ if (json == null) return null;
+ T t = null;
+ try {
+ t = objectMapper.readValue(json, typeReference);
+ } catch (JsonProcessingException e) {
+ LogUtil.error(e.getMessage(), e);
+ }
+ return t;
+ }
+
public static List parseList(String json, TypeReference> classOfT) {
if (ObjectUtils.isEmpty(json)) return Collections.emptyList();
List t = null;
diff --git a/sdk/common/src/main/java/io/gisbi/utils/MappingUtils.java b/sdk/common/src/main/java/io/gisbi/utils/MappingUtils.java
new file mode 100644
index 0000000..0d78b67
--- /dev/null
+++ b/sdk/common/src/main/java/io/gisbi/utils/MappingUtils.java
@@ -0,0 +1,41 @@
+package io.gisbi.utils;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class MappingUtils {
+
+ public static Map mapNestedUserData(Map userMap, Map mappingMap) {
+
+ Map resultMap = new HashMap<>();
+ mappingMap.forEach((targetKey, sourcePath) -> {
+ Object value = getNestedValue(userMap, sourcePath);
+ if (value != null) {
+ resultMap.put(targetKey, value.toString());
+ }
+ });
+
+ return resultMap;
+ }
+
+ private static Object getNestedValue(Map sourceMap, String path) {
+ String[] keys = path.split("\\.");
+ Object current = sourceMap;
+
+ for (String key : keys) {
+ if (!(current instanceof Map)) {
+ return null;
+ }
+ @SuppressWarnings("unchecked")
+ Map currentMap = (Map) current;
+ current = currentMap.get(key);
+
+ if (current == null) {
+ return null;
+ }
+ }
+
+ return current;
+ }
+
+}
diff --git a/sdk/common/src/main/java/io/gisbi/utils/SnowFlake.java b/sdk/common/src/main/java/io/gisbi/utils/SnowFlake.java
index c8042cf..10db18f 100644
--- a/sdk/common/src/main/java/io/gisbi/utils/SnowFlake.java
+++ b/sdk/common/src/main/java/io/gisbi/utils/SnowFlake.java
@@ -1,7 +1,17 @@
package io.gisbi.utils;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+@Component
public class SnowFlake {
+
+ @Value("${gisbi.machine-id:1}")
+ public void setMachineId(long machineId) {
+ this.machineId = machineId;
+ }
+
/**
* 起始的时间戳
*/
@@ -44,6 +54,10 @@ public class SnowFlake {
this.machineId = machineId;
}
+ public SnowFlake() {
+ this.datacenterId = 1;
+ }
+
/**
* 产生下一个ID
*
diff --git a/sdk/common/src/main/java/io/gisbi/utils/VersionUtil.java b/sdk/common/src/main/java/io/gisbi/utils/VersionUtil.java
index 7febfe9..2afc046 100644
--- a/sdk/common/src/main/java/io/gisbi/utils/VersionUtil.java
+++ b/sdk/common/src/main/java/io/gisbi/utils/VersionUtil.java
@@ -8,7 +8,7 @@ public class VersionUtil {
public static String getRandomVersion() {
Environment environment = CommonBeanFactory.getBean(Environment.class);
assert environment != null;
- return environment.getProperty("gisbi.version", "1.0.0");
+ return environment.getProperty("gisbi.version", "2.0.0");
}
}
diff --git a/sdk/common/src/main/java/io/gisbi/utils/WhitelistUtils.java b/sdk/common/src/main/java/io/gisbi/utils/WhitelistUtils.java
index e5ee0db..bb6b694 100644
--- a/sdk/common/src/main/java/io/gisbi/utils/WhitelistUtils.java
+++ b/sdk/common/src/main/java/io/gisbi/utils/WhitelistUtils.java
@@ -103,7 +103,7 @@ public class WhitelistUtils {
}
private static void invalidUrl(String requestURI) {
- if (requestURI.contains("./") || requestURI.contains(".%") || (requestURI.contains(";") && !requestURI.contains("?"))) {
+ if (requestURI.contains("./") || requestURI.contains(".%") || requestURI.toLowerCase().contains("%2e") || (requestURI.contains(";") && !requestURI.contains("?"))) {
DEException.throwException(INTERFACE_ADDRESS_INVALID.code(), String.format("%s [%s]", INTERFACE_ADDRESS_INVALID.message(), requestURI));
}
}