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)); } }