From 72ec878480bc5e88c5034d94ccac992d2b5f0917 Mon Sep 17 00:00:00 2001 From: zlt2000 Date: Fri, 9 Oct 2020 00:21:39 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=BF=E6=8D=A2fastjson=E4=B8=BAjackson?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../search/client/feign/SearchService.java | 4 +- .../SearchServiceFallbackFactory.java | 4 +- .../search/client/service/IQueryService.java | 6 +- .../client/service/impl/QueryServiceImpl.java | 6 +- .../admin/service/impl/IndexServiceImpl.java | 7 +- .../search/controller/SearchController.java | 4 +- .../search/service/ISearchService.java | 4 +- .../service/impl/AggregationServiceImpl.java | 4 +- .../service/impl/SearchServiceImpl.java | 4 +- .../user/controller/SysUserController.java | 4 +- .../central/oauth2/common/util/JwtUtils.java | 15 +- zlt-commons/zlt-common-core/pom.xml | 5 + .../common/constant/CommonConstant.java | 1 + .../com/central/common/utils/JsonUtil.java | 179 ++++++++++++++++++ .../common/utils/WebfluxResponseUtil.java | 3 +- .../com/central/es/utils/SearchBuilder.java | 36 ++-- .../OrderTransactionListenerImpl.java | 4 +- .../route/NacosRouteDefinitionRepository.java | 4 +- .../route/nacos/NacosDynRouteLocator.java | 4 +- .../log/controller/AuditLogController.java | 4 +- .../controller/SlowQueryLogController.java | 4 +- .../log/controller/SysLogController.java | 4 +- .../handler/OauthLogoutSuccessHandler.java | 6 +- .../oauth2/common/util/JwtUtilsTest.java | 4 +- 24 files changed, 257 insertions(+), 63 deletions(-) create mode 100644 zlt-commons/zlt-common-core/src/main/java/com/central/common/utils/JsonUtil.java diff --git a/zlt-business/search-center/search-client/src/main/java/com/central/search/client/feign/SearchService.java b/zlt-business/search-center/search-client/src/main/java/com/central/search/client/feign/SearchService.java index 1f8d3d3..b094f5c 100644 --- a/zlt-business/search-center/search-client/src/main/java/com/central/search/client/feign/SearchService.java +++ b/zlt-business/search-center/search-client/src/main/java/com/central/search/client/feign/SearchService.java @@ -1,10 +1,10 @@ package com.central.search.client.feign; -import com.alibaba.fastjson.JSONObject; import com.central.common.constant.ServiceNameConstants; import com.central.common.model.PageResult; import com.central.search.client.feign.fallback.SearchServiceFallbackFactory; import com.central.search.model.SearchDto; +import com.fasterxml.jackson.databind.JsonNode; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.*; @@ -19,5 +19,5 @@ public interface SearchService { * @param searchDto 搜索Dto */ @PostMapping(value = "/search/{indexName}") - PageResult strQuery(@PathVariable("indexName") String indexName, @RequestBody SearchDto searchDto); + PageResult strQuery(@PathVariable("indexName") String indexName, @RequestBody SearchDto searchDto); } diff --git a/zlt-business/search-center/search-client/src/main/java/com/central/search/client/feign/fallback/SearchServiceFallbackFactory.java b/zlt-business/search-center/search-client/src/main/java/com/central/search/client/feign/fallback/SearchServiceFallbackFactory.java index 7623ef2..ac81ee7 100644 --- a/zlt-business/search-center/search-client/src/main/java/com/central/search/client/feign/fallback/SearchServiceFallbackFactory.java +++ b/zlt-business/search-center/search-client/src/main/java/com/central/search/client/feign/fallback/SearchServiceFallbackFactory.java @@ -1,8 +1,8 @@ package com.central.search.client.feign.fallback; -import com.alibaba.fastjson.JSONObject; import com.central.common.model.PageResult; import com.central.search.client.feign.SearchService; +import com.fasterxml.jackson.databind.JsonNode; import feign.hystrix.FallbackFactory; import lombok.extern.slf4j.Slf4j; @@ -17,7 +17,7 @@ public class SearchServiceFallbackFactory implements FallbackFactory { log.error("通过索引{}搜索异常:{}", indexName, throwable); - return PageResult.builder().build(); + return PageResult.builder().build(); }; } } diff --git a/zlt-business/search-center/search-client/src/main/java/com/central/search/client/service/IQueryService.java b/zlt-business/search-center/search-client/src/main/java/com/central/search/client/service/IQueryService.java index dab65cd..1a282ca 100644 --- a/zlt-business/search-center/search-client/src/main/java/com/central/search/client/service/IQueryService.java +++ b/zlt-business/search-center/search-client/src/main/java/com/central/search/client/service/IQueryService.java @@ -1,9 +1,9 @@ package com.central.search.client.service; -import com.alibaba.fastjson.JSONObject; import com.central.common.model.PageResult; import com.central.search.model.LogicDelDto; import com.central.search.model.SearchDto; +import com.fasterxml.jackson.databind.JsonNode; import java.util.Map; @@ -19,7 +19,7 @@ public interface IQueryService { * @param indexName 索引名 * @param searchDto 搜索Dto */ - PageResult strQuery(String indexName, SearchDto searchDto); + PageResult strQuery(String indexName, SearchDto searchDto); /** * 查询文档列表 @@ -27,7 +27,7 @@ public interface IQueryService { * @param searchDto 搜索Dto * @param logicDelDto 逻辑删除Dto */ - PageResult strQuery(String indexName, SearchDto searchDto, LogicDelDto logicDelDto); + PageResult strQuery(String indexName, SearchDto searchDto, LogicDelDto logicDelDto); /** * 访问统计聚合查询 diff --git a/zlt-business/search-center/search-client/src/main/java/com/central/search/client/service/impl/QueryServiceImpl.java b/zlt-business/search-center/search-client/src/main/java/com/central/search/client/service/impl/QueryServiceImpl.java index d479891..221faaf 100644 --- a/zlt-business/search-center/search-client/src/main/java/com/central/search/client/service/impl/QueryServiceImpl.java +++ b/zlt-business/search-center/search-client/src/main/java/com/central/search/client/service/impl/QueryServiceImpl.java @@ -1,13 +1,13 @@ package com.central.search.client.service.impl; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSONObject; import com.central.common.model.PageResult; import com.central.search.client.feign.AggregationService; import com.central.search.client.feign.SearchService; import com.central.search.client.service.IQueryService; import com.central.search.model.LogicDelDto; import com.central.search.model.SearchDto; +import com.fasterxml.jackson.databind.JsonNode; import javax.annotation.Resource; import java.util.Map; @@ -26,12 +26,12 @@ public class QueryServiceImpl implements IQueryService { private AggregationService aggregationService; @Override - public PageResult strQuery(String indexName, SearchDto searchDto) { + public PageResult strQuery(String indexName, SearchDto searchDto) { return strQuery(indexName, searchDto, null); } @Override - public PageResult strQuery(String indexName, SearchDto searchDto, LogicDelDto logicDelDto) { + public PageResult strQuery(String indexName, SearchDto searchDto, LogicDelDto logicDelDto) { setLogicDelQueryStr(searchDto, logicDelDto); return searchService.strQuery(indexName, searchDto); } diff --git a/zlt-business/search-center/search-server/src/main/java/com/central/admin/service/impl/IndexServiceImpl.java b/zlt-business/search-center/search-server/src/main/java/com/central/admin/service/impl/IndexServiceImpl.java index 0879081..3303852 100644 --- a/zlt-business/search-center/search-server/src/main/java/com/central/admin/service/impl/IndexServiceImpl.java +++ b/zlt-business/search-center/search-server/src/main/java/com/central/admin/service/impl/IndexServiceImpl.java @@ -1,10 +1,10 @@ package com.central.admin.service.impl; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSONObject; import com.central.admin.model.IndexDto; import com.central.admin.service.IIndexService; import com.central.common.model.PageResult; +import com.central.common.utils.JsonUtil; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.http.util.EntityUtils; @@ -72,6 +72,9 @@ public class IndexServiceImpl implements IIndexService { @Override public PageResult> list(String queryStr, String indices) throws IOException { + if (StrUtil.isNotEmpty(queryStr)) { + indices = queryStr; + } Response response = elasticsearchRestTemplate.getClient().getLowLevelClient() .performRequest(new Request( "GET", @@ -99,7 +102,7 @@ public class IndexServiceImpl implements IIndexService { String settingsStr = getIndexResponse.getSettings().get(indexName).toString(); Object settingsObj = null; if (StrUtil.isNotEmpty(settingsStr)) { - settingsObj = JSONObject.parse(settingsStr); + settingsObj = JsonUtil.parse(settingsStr); } Map result = new HashMap<>(1); Map indexMap = new HashMap<>(3); diff --git a/zlt-business/search-center/search-server/src/main/java/com/central/search/controller/SearchController.java b/zlt-business/search-center/search-server/src/main/java/com/central/search/controller/SearchController.java index 43d6aa1..6a7f30a 100644 --- a/zlt-business/search-center/search-server/src/main/java/com/central/search/controller/SearchController.java +++ b/zlt-business/search-center/search-server/src/main/java/com/central/search/controller/SearchController.java @@ -1,10 +1,10 @@ package com.central.search.controller; -import com.alibaba.fastjson.JSONObject; import com.central.common.model.*; import com.central.search.model.SearchDto; import com.central.search.service.ISearchService; +import com.fasterxml.jackson.databind.JsonNode; import org.springframework.web.bind.annotation.*; import io.swagger.annotations.Api; @@ -34,7 +34,7 @@ public class SearchController { * @param searchDto 搜索Dto */ @PostMapping("/{indexName}") - public PageResult strQuery(@PathVariable String indexName, @RequestBody(required = false) SearchDto searchDto) throws IOException { + public PageResult strQuery(@PathVariable String indexName, @RequestBody(required = false) SearchDto searchDto) throws IOException { if (searchDto == null) { searchDto = new SearchDto(); } diff --git a/zlt-business/search-center/search-server/src/main/java/com/central/search/service/ISearchService.java b/zlt-business/search-center/search-server/src/main/java/com/central/search/service/ISearchService.java index 575d403..3396bcf 100644 --- a/zlt-business/search-center/search-server/src/main/java/com/central/search/service/ISearchService.java +++ b/zlt-business/search-center/search-server/src/main/java/com/central/search/service/ISearchService.java @@ -1,8 +1,8 @@ package com.central.search.service; -import com.alibaba.fastjson.JSONObject; import com.central.common.model.PageResult; import com.central.search.model.SearchDto; +import com.fasterxml.jackson.databind.JsonNode; import java.io.IOException; @@ -17,5 +17,5 @@ public interface ISearchService { * @param searchDto 搜索Dto * @return */ - PageResult strQuery(String indexName, SearchDto searchDto) throws IOException; + PageResult strQuery(String indexName, SearchDto searchDto) throws IOException; } diff --git a/zlt-business/search-center/search-server/src/main/java/com/central/search/service/impl/AggregationServiceImpl.java b/zlt-business/search-center/search-server/src/main/java/com/central/search/service/impl/AggregationServiceImpl.java index 9e6f783..b0ec5ec 100644 --- a/zlt-business/search-center/search-server/src/main/java/com/central/search/service/impl/AggregationServiceImpl.java +++ b/zlt-business/search-center/search-server/src/main/java/com/central/search/service/impl/AggregationServiceImpl.java @@ -150,7 +150,7 @@ public class AggregationServiceImpl implements IAggregationService { .fixedInterval(new DateHistogramInterval("90m")) .format(CommonConstant.DATETIME_FORMAT) //时区相差8小时 - .timeZone(ZoneId.of("GMT+8")) + .timeZone(ZoneId.of(CommonConstant.TIME_ZONE_GMT8)) .minDocCount(0L) .extendedBounds(new ExtendedBounds( curDateTime.minusDays(1).format(DateTimeFormatter.ofPattern(CommonConstant.DATETIME_FORMAT)), @@ -176,7 +176,7 @@ public class AggregationServiceImpl implements IAggregationService { .calendarInterval(DateHistogramInterval.DAY) .format(CommonConstant.DATE_FORMAT) //时区相差8小时 - .timeZone(ZoneId.of("GMT+8")) + .timeZone(ZoneId.of(CommonConstant.TIME_ZONE_GMT8)) .minDocCount(0L) .extendedBounds(new ExtendedBounds( localDate.minusDays(6).format(DateTimeFormatter.ofPattern(CommonConstant.DATE_FORMAT)), diff --git a/zlt-business/search-center/search-server/src/main/java/com/central/search/service/impl/SearchServiceImpl.java b/zlt-business/search-center/search-server/src/main/java/com/central/search/service/impl/SearchServiceImpl.java index bed63fd..9530060 100644 --- a/zlt-business/search-center/search-server/src/main/java/com/central/search/service/impl/SearchServiceImpl.java +++ b/zlt-business/search-center/search-server/src/main/java/com/central/search/service/impl/SearchServiceImpl.java @@ -1,10 +1,10 @@ package com.central.search.service.impl; -import com.alibaba.fastjson.JSONObject; import com.central.common.model.PageResult; import com.central.es.utils.SearchBuilder; import com.central.search.model.SearchDto; import com.central.search.service.ISearchService; +import com.fasterxml.jackson.databind.JsonNode; import org.elasticsearch.search.sort.SortOrder; import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate; import org.springframework.stereotype.Service; @@ -32,7 +32,7 @@ public class SearchServiceImpl implements ISearchService { * @return */ @Override - public PageResult strQuery(String indexName, SearchDto searchDto) throws IOException { + public PageResult strQuery(String indexName, SearchDto searchDto) throws IOException { return SearchBuilder.builder(elasticsearchRestTemplate, indexName) .setStringQuery(searchDto.getQueryStr()) .addSort(searchDto.getSortCol(), SortOrder.DESC) diff --git a/zlt-business/user-center/src/main/java/com/central/user/controller/SysUserController.java b/zlt-business/user-center/src/main/java/com/central/user/controller/SysUserController.java index 57207cf..01d8459 100644 --- a/zlt-business/user-center/src/main/java/com/central/user/controller/SysUserController.java +++ b/zlt-business/user-center/src/main/java/com/central/user/controller/SysUserController.java @@ -7,7 +7,6 @@ import java.util.Map; import java.util.Set; import cn.hutool.core.bean.BeanUtil; -import com.alibaba.fastjson.JSONObject; import com.central.common.annotation.LoginUser; import com.central.common.constant.CommonConstant; import com.central.common.model.*; @@ -18,6 +17,7 @@ import com.central.search.client.service.IQueryService; import com.central.search.model.LogicDelDto; import com.central.search.model.SearchDto; import com.central.user.model.SysUserExcel; +import com.fasterxml.jackson.databind.JsonNode; import org.apache.commons.collections4.MapUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.CacheEvict; @@ -280,7 +280,7 @@ public class SysUserController { @ApiImplicitParam(name = "queryStr", value = "搜索关键字", dataType = "String") }) @GetMapping("/users/search") - public PageResult search(SearchDto searchDto) { + public PageResult search(SearchDto searchDto) { searchDto.setIsHighlighter(true); searchDto.setSortCol("createTime"); return queryService.strQuery("sys_user", searchDto, SEARCH_LOGIC_DEL_DTO); diff --git a/zlt-commons/zlt-auth-client-spring-boot-starter/src/main/java/com/central/oauth2/common/util/JwtUtils.java b/zlt-commons/zlt-auth-client-spring-boot-starter/src/main/java/com/central/oauth2/common/util/JwtUtils.java index 507dfde..01d3110 100644 --- a/zlt-commons/zlt-auth-client-spring-boot-starter/src/main/java/com/central/oauth2/common/util/JwtUtils.java +++ b/zlt-commons/zlt-auth-client-spring-boot-starter/src/main/java/com/central/oauth2/common/util/JwtUtils.java @@ -1,8 +1,9 @@ package com.central.oauth2.common.util; -import com.alibaba.fastjson.JSONObject; import com.central.common.constant.SecurityConstants; +import com.central.common.utils.JsonUtil; import com.central.common.utils.RsaUtils; +import com.fasterxml.jackson.databind.JsonNode; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.springframework.security.jwt.Jwt; @@ -46,10 +47,10 @@ public class JwtUtils { * @param rsaPublicKey 公钥 * @return */ - public static JSONObject decodeAndVerify(String jwtToken, RSAPublicKey rsaPublicKey) { + public static JsonNode decodeAndVerify(String jwtToken, RSAPublicKey rsaPublicKey) { SignatureVerifier rsaVerifier = new RsaVerifier(rsaPublicKey); Jwt jwt = JwtHelper.decodeAndVerify(jwtToken, rsaVerifier); - return JSONObject.parseObject(jwt.getClaims()); + return JsonUtil.parse(jwt.getClaims()); } /** @@ -57,7 +58,7 @@ public class JwtUtils { * @param jwtToken token值 * @return */ - public static JSONObject decodeAndVerify(String jwtToken) { + public static JsonNode decodeAndVerify(String jwtToken) { return decodeAndVerify(jwtToken, getPubKeyObj()); } @@ -67,8 +68,8 @@ public class JwtUtils { * @param currTime 当前时间 * @return 未过期:true,已过期:false */ - public static boolean checkExp(JSONObject claims, long currTime) { - long exp = claims.getLong("exp"); + public static boolean checkExp(JsonNode claims, long currTime) { + long exp = claims.get("exp").asLong(); if (exp < currTime) { return false; } @@ -80,7 +81,7 @@ public class JwtUtils { * @param claims jwt内容 * @return 未过期:true,已过期:false */ - public static boolean checkExp(JSONObject claims) { + public static boolean checkExp(JsonNode claims) { return checkExp(claims, System.currentTimeMillis()); } } diff --git a/zlt-commons/zlt-common-core/pom.xml b/zlt-commons/zlt-common-core/pom.xml index 3b4a7e6..992264b 100644 --- a/zlt-commons/zlt-common-core/pom.xml +++ b/zlt-commons/zlt-common-core/pom.xml @@ -86,5 +86,10 @@ reactor-core true + + + com.fasterxml.jackson.core + jackson-databind + \ No newline at end of file diff --git a/zlt-commons/zlt-common-core/src/main/java/com/central/common/constant/CommonConstant.java b/zlt-commons/zlt-common-core/src/main/java/com/central/common/constant/CommonConstant.java index d3f3902..7313c08 100644 --- a/zlt-commons/zlt-common-core/src/main/java/com/central/common/constant/CommonConstant.java +++ b/zlt-commons/zlt-common-core/src/main/java/com/central/common/constant/CommonConstant.java @@ -98,6 +98,7 @@ public interface CommonConstant { String SIMPLE_MONTH_FORMAT = "yyyyMM"; String SIMPLE_DATE_FORMAT = "yyyyMMdd"; String SIMPLE_DATETIME_FORMAT = "yyyyMMddHHmmss"; + String TIME_ZONE_GMT8 = "GMT+8"; String DEF_USER_PASSWORD = "123456"; diff --git a/zlt-commons/zlt-common-core/src/main/java/com/central/common/utils/JsonUtil.java b/zlt-commons/zlt-common-core/src/main/java/com/central/common/utils/JsonUtil.java new file mode 100644 index 0000000..dce9a24 --- /dev/null +++ b/zlt-commons/zlt-common-core/src/main/java/com/central/common/utils/JsonUtil.java @@ -0,0 +1,179 @@ +package com.central.common.utils; + + +import com.central.common.constant.CommonConstant; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.json.JsonReadFeature; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.*; +import org.apache.commons.lang3.StringUtils; + +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.List; +import java.util.Map; +import java.util.TimeZone; + +/** + * 基于 Jackson 的 json 工具类 + * + * @author zlt + * @date 2020/10/8 + *

+ * Blog: https://zlt2000.gitee.io + * Github: https://github.com/zlt2000 + */ +public class JsonUtil { + private final static ObjectMapper MAPPER = new ObjectMapper(); + + static { + // 忽略在json字符串中存在,但是在java对象中不存在对应属性的情况 + MAPPER.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + // 忽略空Bean转json的错误 + MAPPER.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS,false); + // 允许不带引号的字段名称 + MAPPER.configure(JsonReadFeature.ALLOW_UNQUOTED_FIELD_NAMES.mappedFeature(), true); + // 允许单引号 + MAPPER.configure(JsonReadFeature.ALLOW_SINGLE_QUOTES.mappedFeature(), true); + // allow int startWith 0 + MAPPER.configure(JsonReadFeature.ALLOW_LEADING_ZEROS_FOR_NUMBERS.mappedFeature(), true); + // 允许字符串存在转义字符:\r \n \t + MAPPER.configure(JsonReadFeature.ALLOW_UNESCAPED_CONTROL_CHARS.mappedFeature(), true); + // 排除空值字段 + MAPPER.setSerializationInclusion(JsonInclude.Include.NON_NULL); + // 使用驼峰式 + MAPPER.setPropertyNamingStrategy(PropertyNamingStrategy.LOWER_CAMEL_CASE); + // 使用bean名称 + MAPPER.enable(MapperFeature.USE_STD_BEAN_NAMING); + // 所有日期格式都统一为固定格式 + MAPPER.setDateFormat(new SimpleDateFormat(CommonConstant.DATETIME_FORMAT)); + MAPPER.setTimeZone(TimeZone.getTimeZone(CommonConstant.TIME_ZONE_GMT8)); + } + + /** + * 对象转换为json字符串 + * @param o 要转换的对象 + */ + public static String toJSONString(Object o) { + return toJSONString(o, false); + } + + /** + * 对象转换为json字符串 + * @param o 要转换的对象 + * @param format 是否格式化json + */ + public static String toJSONString(Object o, boolean format) { + try { + if (o == null) { + return ""; + } + if (o instanceof Number) { + return o.toString(); + } + if (o instanceof String) { + return (String)o; + } + if (format) { + return MAPPER.writerWithDefaultPrettyPrinter().writeValueAsString(o); + } + return MAPPER.writeValueAsString(o); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + } + + /** + * 字符串转换为自定义对象 + * @param json json字符串 + * @param cls 目标对象 + */ + public static T toObject(String json, Class cls) { + if(StringUtils.isBlank(json) || cls == null){ + return null; + } + try { + return MAPPER.readValue(json, cls); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + /** + * 字符串转换为自定义对象 + * @param json json字符串 + * @param typeReference 目标对象类型 + */ + public static T toObject(String json, TypeReference typeReference) { + if(StringUtils.isBlank(json) || typeReference == null){ + return null; + } + try { + return MAPPER.readValue(json, typeReference); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + /** + * 字符串转换为JsonNode对象 + * @param json json字符串 + */ + public static JsonNode parse(String json) { + if (StringUtils.isBlank(json)) { + return null; + } + try { + return MAPPER.readTree(json); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + /** + * 对象转换为map对象 + * @param o 要转换的对象 + */ + public static Map toMap(Object o) { + if (o == null) { + return null; + } + if (o instanceof String) { + return toObject((String)o, Map.class); + } + return MAPPER.convertValue(o, Map.class); + } + + /** + * 字符串转换为list对象 + * @param json json字符串 + */ + public static List toList(String json) { + if (StringUtils.isBlank(json)) { + return null; + } + try { + return MAPPER.readValue(json, List.class); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + } + + /** + * json字符串转换为list + * @param json json字符串 + * @param cls list的元素类型 + */ + public static List toList(String json, Class cls) { + if (StringUtils.isBlank(json)) { + return null; + } + try { + JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, cls); + return MAPPER.readValue(json, javaType); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + } +} diff --git a/zlt-commons/zlt-common-core/src/main/java/com/central/common/utils/WebfluxResponseUtil.java b/zlt-commons/zlt-common-core/src/main/java/com/central/common/utils/WebfluxResponseUtil.java index 53159ea..14d7dc9 100644 --- a/zlt-commons/zlt-common-core/src/main/java/com/central/common/utils/WebfluxResponseUtil.java +++ b/zlt-commons/zlt-common-core/src/main/java/com/central/common/utils/WebfluxResponseUtil.java @@ -1,6 +1,5 @@ package com.central.common.utils; -import com.alibaba.fastjson.JSONObject; import com.central.common.model.Result; import org.springframework.core.io.buffer.DataBuffer; import org.springframework.core.io.buffer.DataBufferFactory; @@ -49,7 +48,7 @@ public class WebfluxResponseUtil { response.setStatusCode(HttpStatus.valueOf(httpStatus)); response.getHeaders().setContentType(MediaType.APPLICATION_JSON); DataBufferFactory dataBufferFactory = response.bufferFactory(); - DataBuffer buffer = dataBufferFactory.wrap(JSONObject.toJSONString(result).getBytes(Charset.defaultCharset())); + DataBuffer buffer = dataBufferFactory.wrap(JsonUtil.toJSONString(result).getBytes(Charset.defaultCharset())); return response.writeWith(Mono.just(buffer)).doOnError((error) -> { DataBufferUtils.release(buffer); }); diff --git a/zlt-commons/zlt-elasticsearch-spring-boot-starter/src/main/java/com/central/es/utils/SearchBuilder.java b/zlt-commons/zlt-elasticsearch-spring-boot-starter/src/main/java/com/central/es/utils/SearchBuilder.java index 5550b94..70a06fc 100644 --- a/zlt-commons/zlt-elasticsearch-spring-boot-starter/src/main/java/com/central/es/utils/SearchBuilder.java +++ b/zlt-commons/zlt-elasticsearch-spring-boot-starter/src/main/java/com/central/es/utils/SearchBuilder.java @@ -3,9 +3,10 @@ package com.central.es.utils; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.BooleanUtil; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; import com.central.common.model.PageResult; +import com.central.common.utils.JsonUtil; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.node.ObjectNode; import lombok.Getter; import lombok.Setter; import org.apache.commons.beanutils.PropertyUtils; @@ -200,16 +201,16 @@ public class SearchBuilder { } /** - * 返回列表结果 List + * 返回列表结果 List */ - public List getList() throws IOException { + public List getList() throws IOException { return getList(this.get().getHits()); } /** * 返回分页结果 PageResult */ - public PageResult getPage() throws IOException { + public PageResult getPage() throws IOException { return this.getPage(null, null); } @@ -218,30 +219,31 @@ public class SearchBuilder { * @param page 当前页数 * @param limit 每页显示 */ - public PageResult getPage(Integer page, Integer limit) throws IOException { + public PageResult getPage(Integer page, Integer limit) throws IOException { this.setPage(page, limit); SearchResponse response = this.get(); SearchHits searchHits = response.getHits(); long totalCnt = searchHits.getTotalHits().value; - List list = getList(searchHits); - return PageResult.builder().data(list).code(0).count(totalCnt).build(); + List list = getList(searchHits); + return PageResult.builder().data(list).code(0).count(totalCnt).build(); } /** * 返回JSON列表数据 */ - private List getList(SearchHits searchHits) { - List list = new ArrayList<>(); + private List getList(SearchHits searchHits) { + List list = new ArrayList<>(); if (searchHits != null) { searchHits.forEach(item -> { - JSONObject jsonObject = JSON.parseObject(item.getSourceAsString()); - jsonObject.put("id", item.getId()); + JsonNode jsonNode = JsonUtil.parse(item.getSourceAsString()); + ObjectNode objectNode = (ObjectNode)jsonNode; + objectNode.put("id", item.getId()); Map highlightFields = item.getHighlightFields(); if (highlightFields != null) { - populateHighLightedFields(jsonObject, highlightFields); + populateHighLightedFields(objectNode, highlightFields); } - list.add(jsonObject); + list.add(objectNode); }); } return list; @@ -257,7 +259,11 @@ public class SearchBuilder { try { String name = field.getName(); if (!name.endsWith(".keyword")) { - PropertyUtils.setProperty(result, field.getName(), concat(field.fragments())); + if (result instanceof ObjectNode) { + ((ObjectNode)result).put(field.getName(), concat(field.fragments())); + } else { + PropertyUtils.setProperty(result, field.getName(), concat(field.fragments())); + } } } catch (InvocationTargetException | IllegalAccessException | NoSuchMethodException e) { throw new ElasticsearchException("failed to set highlighted value for field: " + field.getName() diff --git a/zlt-demo/rocketmq-demo/rocketmq-transactional/src/main/java/com/rocketmq/demo/listener/OrderTransactionListenerImpl.java b/zlt-demo/rocketmq-demo/rocketmq-transactional/src/main/java/com/rocketmq/demo/listener/OrderTransactionListenerImpl.java index c7ec317..103551b 100644 --- a/zlt-demo/rocketmq-demo/rocketmq-transactional/src/main/java/com/rocketmq/demo/listener/OrderTransactionListenerImpl.java +++ b/zlt-demo/rocketmq-demo/rocketmq-transactional/src/main/java/com/rocketmq/demo/listener/OrderTransactionListenerImpl.java @@ -1,6 +1,6 @@ package com.rocketmq.demo.listener; -import com.alibaba.fastjson.JSON; +import com.central.common.utils.JsonUtil; import com.rocketmq.demo.model.Order; import com.rocketmq.demo.service.IOrderService; import org.apache.rocketmq.spring.annotation.RocketMQTransactionListener; @@ -24,7 +24,7 @@ public class OrderTransactionListenerImpl implements RocketMQLocalTransactionLis public RocketMQLocalTransactionState executeLocalTransaction(Message message, Object arg) { //插入订单数据 String orderJson = new String(((byte[])message.getPayload())); - Order order = JSON.parseObject(orderJson, Order.class); + Order order = JsonUtil.toObject(orderJson, Order.class); orderService.save(order); String produceError = (String)message.getHeaders().get("produceError"); diff --git a/zlt-gateway/sc-gateway/src/main/java/com/central/gateway/route/NacosRouteDefinitionRepository.java b/zlt-gateway/sc-gateway/src/main/java/com/central/gateway/route/NacosRouteDefinitionRepository.java index 4025a9a..155fc18 100644 --- a/zlt-gateway/sc-gateway/src/main/java/com/central/gateway/route/NacosRouteDefinitionRepository.java +++ b/zlt-gateway/sc-gateway/src/main/java/com/central/gateway/route/NacosRouteDefinitionRepository.java @@ -3,9 +3,9 @@ package com.central.gateway.route; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.cloud.nacos.NacosConfigProperties; -import com.alibaba.fastjson.JSONObject; import com.alibaba.nacos.api.config.listener.Listener; import com.alibaba.nacos.api.exception.NacosException; +import com.central.common.utils.JsonUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.cloud.gateway.event.RefreshRoutesEvent; import org.springframework.cloud.gateway.route.RouteDefinition; @@ -87,7 +87,7 @@ public class NacosRouteDefinitionRepository implements RouteDefinitionRepository private List getListByStr(String content) { if (StrUtil.isNotEmpty(content)) { - return JSONObject.parseArray(content, RouteDefinition.class); + return JsonUtil.toList(content, RouteDefinition.class); } return new ArrayList<>(0); } diff --git a/zlt-gateway/zuul-gateway/src/main/java/com/central/gateway/route/nacos/NacosDynRouteLocator.java b/zlt-gateway/zuul-gateway/src/main/java/com/central/gateway/route/nacos/NacosDynRouteLocator.java index fb723a7..335c9b3 100644 --- a/zlt-gateway/zuul-gateway/src/main/java/com/central/gateway/route/nacos/NacosDynRouteLocator.java +++ b/zlt-gateway/zuul-gateway/src/main/java/com/central/gateway/route/nacos/NacosDynRouteLocator.java @@ -3,9 +3,9 @@ package com.central.gateway.route.nacos; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.cloud.nacos.NacosConfigProperties; -import com.alibaba.fastjson.JSONObject; import com.alibaba.nacos.api.config.listener.Listener; import com.alibaba.nacos.api.exception.NacosException; +import com.central.common.utils.JsonUtil; import com.central.gateway.config.ZuulRouteEntity; import com.central.gateway.route.AbstractDynRouteLocator; import lombok.Setter; @@ -106,7 +106,7 @@ public class NacosDynRouteLocator extends AbstractDynRouteLocator { public List getListByStr(String content) { if (StrUtil.isNotEmpty(content)) { - return JSONObject.parseArray(content, ZuulRouteEntity.class); + return JsonUtil.toList(content, ZuulRouteEntity.class); } return new ArrayList<>(0); } diff --git a/zlt-monitor/log-center/src/main/java/com/central/log/controller/AuditLogController.java b/zlt-monitor/log-center/src/main/java/com/central/log/controller/AuditLogController.java index 12af59d..1b03ce2 100644 --- a/zlt-monitor/log-center/src/main/java/com/central/log/controller/AuditLogController.java +++ b/zlt-monitor/log-center/src/main/java/com/central/log/controller/AuditLogController.java @@ -1,9 +1,9 @@ package com.central.log.controller; -import com.alibaba.fastjson.JSONObject; import com.central.common.model.PageResult; import com.central.search.client.service.IQueryService; import com.central.search.model.SearchDto; +import com.fasterxml.jackson.databind.JsonNode; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; @@ -34,7 +34,7 @@ public class AuditLogController { @ApiImplicitParam(name = "queryStr", value = "搜索关键字", dataType = "String") }) @GetMapping(value = "/auditLog") - public PageResult getPage(SearchDto searchDto) { + public PageResult getPage(SearchDto searchDto) { searchDto.setIsHighlighter(true); searchDto.setSortCol("timestamp"); return queryService.strQuery("audit-log-*", searchDto); diff --git a/zlt-monitor/log-center/src/main/java/com/central/log/controller/SlowQueryLogController.java b/zlt-monitor/log-center/src/main/java/com/central/log/controller/SlowQueryLogController.java index edaf645..99d5a3f 100644 --- a/zlt-monitor/log-center/src/main/java/com/central/log/controller/SlowQueryLogController.java +++ b/zlt-monitor/log-center/src/main/java/com/central/log/controller/SlowQueryLogController.java @@ -1,9 +1,9 @@ package com.central.log.controller; -import com.alibaba.fastjson.JSONObject; import com.central.common.model.PageResult; import com.central.search.client.service.IQueryService; import com.central.search.model.SearchDto; +import com.fasterxml.jackson.databind.JsonNode; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; @@ -28,7 +28,7 @@ public class SlowQueryLogController { @ApiImplicitParam(name = "queryStr", value = "搜索关键字", dataType = "String") }) @GetMapping(value = "/slowQueryLog") - public PageResult getPage(SearchDto searchDto) { + public PageResult getPage(SearchDto searchDto) { searchDto.setIsHighlighter(true); searchDto.setSortCol("timestamp"); return queryService.strQuery("mysql-slowlog-*", searchDto); diff --git a/zlt-monitor/log-center/src/main/java/com/central/log/controller/SysLogController.java b/zlt-monitor/log-center/src/main/java/com/central/log/controller/SysLogController.java index 3893ac7..e7e151a 100644 --- a/zlt-monitor/log-center/src/main/java/com/central/log/controller/SysLogController.java +++ b/zlt-monitor/log-center/src/main/java/com/central/log/controller/SysLogController.java @@ -1,9 +1,9 @@ package com.central.log.controller; -import com.alibaba.fastjson.JSONObject; import com.central.common.model.PageResult; import com.central.search.client.service.IQueryService; import com.central.search.model.SearchDto; +import com.fasterxml.jackson.databind.JsonNode; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; @@ -28,7 +28,7 @@ public class SysLogController { @ApiImplicitParam(name = "queryStr", value = "搜索关键字", dataType = "String") }) @GetMapping(value = "/sysLog") - public PageResult getPage(SearchDto searchDto) { + public PageResult getPage(SearchDto searchDto) { searchDto.setIsHighlighter(true); searchDto.setSortCol("timestamp"); return queryService.strQuery("sys-log-*", searchDto); diff --git a/zlt-uaa/src/main/java/com/central/oauth/handler/OauthLogoutSuccessHandler.java b/zlt-uaa/src/main/java/com/central/oauth/handler/OauthLogoutSuccessHandler.java index 6010e4c..75d3250 100644 --- a/zlt-uaa/src/main/java/com/central/oauth/handler/OauthLogoutSuccessHandler.java +++ b/zlt-uaa/src/main/java/com/central/oauth/handler/OauthLogoutSuccessHandler.java @@ -1,8 +1,8 @@ package com.central.oauth.handler; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.central.common.model.Result; +import com.central.common.utils.JsonUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; @@ -36,9 +36,9 @@ public class OauthLogoutSuccessHandler implements LogoutSuccessHandler { } else { response.setStatus(HttpStatus.OK.value()); response.setCharacterEncoding("UTF-8"); - response.setContentType(MediaType.APPLICATION_JSON_UTF8_VALUE); + response.setContentType(MediaType.APPLICATION_JSON_VALUE); PrintWriter writer = response.getWriter(); - String jsonStr = JSON.toJSONString(Result.succeed("登出成功")); + String jsonStr = JsonUtil.toJSONString(Result.succeed("登出成功")); writer.write(jsonStr); writer.flush(); } diff --git a/zlt-uaa/src/test/java/com/central/oauth2/common/util/JwtUtilsTest.java b/zlt-uaa/src/test/java/com/central/oauth2/common/util/JwtUtilsTest.java index 37c167b..881e05f 100644 --- a/zlt-uaa/src/test/java/com/central/oauth2/common/util/JwtUtilsTest.java +++ b/zlt-uaa/src/test/java/com/central/oauth2/common/util/JwtUtilsTest.java @@ -1,6 +1,6 @@ package com.central.oauth2.common.util; -import com.alibaba.fastjson.JSONObject; +import com.fasterxml.jackson.databind.JsonNode; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.junit4.SpringRunner; @@ -16,7 +16,7 @@ public class JwtUtilsTest { @Test public void test() { String jwtToken = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0ZXN0IjoiYWJjIiwidXNlcl9uYW1lIjoiYWRtaW4iLCJzY29wZSI6WyJhcHAiXSwiZXhwIjoxNTYzNjgyMTI4LCJhdXRob3JpdGllcyI6WyJBRE1JTiJdLCJqdGkiOiJlMDFlNGU0Yi1hZDVkLTRlMTQtODhiMC00OGQ4YzBjN2U5YjkiLCJjbGllbnRfaWQiOiJ3ZWJBcHAifQ.Qrh2aEoN4TL_WIQ9UpxDrW12aqqoVqxeY826sjbea2LB24RBNDYQl1J5vwXzMaQlG9AgjHRL4bTQihwBYYfdL-VuJXx0_l0xONbz9sHPq60a3gAhxOnekNS5-Qet5feTw7j4o2OwNlxo-xty5s8u2lsQY21zCe0tes_T4XeM76JTBpRbQUFGUU3EKxtUFi3Nk9AII4zerW1AbQNvLo4YW2Wvj___0lq5a-xNdCcHlJid8vKgzEF3v3wECOv6OjgL-fUN8VpUsYVt1-_QZp8opPAf-t3OVTtrVIWrJZ_vWV9d6DN5mynKtZ7_mDyMwo_5w3roAZ0ahoBKPKrtYQyEwQ"; - JSONObject claims = JwtUtils.decodeAndVerify(jwtToken); + JsonNode claims = JwtUtils.decodeAndVerify(jwtToken); //token内容 System.out.println(claims); boolean isValid = JwtUtils.checkExp(claims); -- GitLab