diff --git a/wemirr-platform-dependencies/pom.xml b/wemirr-platform-dependencies/pom.xml index fe8396dbc8888d5c3e3f88624f8e167846612524..25e2d040649d4d973e6233ed6d07c14ebb5e177e 100644 --- a/wemirr-platform-dependencies/pom.xml +++ b/wemirr-platform-dependencies/pom.xml @@ -45,7 +45,6 @@ 33.5.0-jre 5.8.42 - 2.0.59 1.8.0 4.6.0 3.0.3 @@ -75,7 +74,7 @@ cn.dev33 - sa-token-fastjson2 + sa-token-jackson ${sa-token.version} @@ -213,21 +212,7 @@ spring-boot-admin-server-ui ${spring-boot-admin.version} - - com.alibaba.fastjson2 - fastjson2 - ${fastjson2.version} - - - com.alibaba.fastjson2 - fastjson2-extension - ${fastjson2.version} - - - com.alibaba.fastjson2 - fastjson2-extension-spring6 - ${fastjson2.version} - + org.redisson diff --git a/wemirr-platform-feign/wemirr-platform-suite-api/src/main/java/com/wemirr/platform/suite/feign/OssFileFeign.java b/wemirr-platform-feign/wemirr-platform-suite-api/src/main/java/com/wemirr/platform/suite/feign/OssFileFeign.java index 351b490c141f24a79386eb8850c9dd5e8d4f4101..cfa08c262e90c650ee10b9c4e95eaca9fdda9cb7 100644 --- a/wemirr-platform-feign/wemirr-platform-suite-api/src/main/java/com/wemirr/platform/suite/feign/OssFileFeign.java +++ b/wemirr-platform-feign/wemirr-platform-suite-api/src/main/java/com/wemirr/platform/suite/feign/OssFileFeign.java @@ -8,6 +8,7 @@ import org.springframework.cloud.openfeign.FeignClient; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestPart; import org.springframework.web.multipart.MultipartFile; import java.util.List; @@ -31,7 +32,7 @@ public interface OssFileFeign extends LoadService { * @param multipartFile 文件 */ @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE, headers = {AutoRefreshTokenProperties.X_AUTO_TOKEN, "ignore-header=Content-Type"}) - OssFileResp upload(@RequestBody MultipartFile multipartFile); + OssFileResp upload(@RequestPart("file") MultipartFile multipartFile); /** * 根据 ID 批量查询 diff --git a/wemirr-platform-feign/wemirr-platform-workflow-api/src/main/java/com/wemirr/platform/workflow/feign/domain/req/StartInstanceReq.java b/wemirr-platform-feign/wemirr-platform-workflow-api/src/main/java/com/wemirr/platform/workflow/feign/domain/req/StartInstanceReq.java index 4f15299b4e5b503a5d7d2c6c2c3195089bacff43..9050eab8b1c42f8897cd920d9e537893049e03c9 100644 --- a/wemirr-platform-feign/wemirr-platform-workflow-api/src/main/java/com/wemirr/platform/workflow/feign/domain/req/StartInstanceReq.java +++ b/wemirr-platform-feign/wemirr-platform-workflow-api/src/main/java/com/wemirr/platform/workflow/feign/domain/req/StartInstanceReq.java @@ -1,6 +1,6 @@ package com.wemirr.platform.workflow.feign.domain.req; -import com.alibaba.fastjson2.JSONObject; +import com.fasterxml.jackson.databind.JsonNode; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; @@ -44,6 +44,6 @@ public class StartInstanceReq { @NotNull(message = "表单参数不能为空") @Schema(description = "表单参数") - private JSONObject variables; + private JsonNode variables; } diff --git a/wemirr-platform-framework/common-framework-core/pom.xml b/wemirr-platform-framework/common-framework-core/pom.xml index dfb3a8690223012249bb01e4e927f36df150dc42..98c35e636a21bd0ece5c806a191098af5e36177f 100644 --- a/wemirr-platform-framework/common-framework-core/pom.xml +++ b/wemirr-platform-framework/common-framework-core/pom.xml @@ -52,10 +52,6 @@ - - com.alibaba.fastjson2 - fastjson2 - com.fasterxml.jackson.core jackson-core diff --git a/wemirr-platform-framework/common-framework-core/src/main/java/com/wemirr/framework/commons/JacksonUtils.java b/wemirr-platform-framework/common-framework-core/src/main/java/com/wemirr/framework/commons/JacksonUtils.java index 5a0a348ae9f9e7f6308b98d2b8b6a868f2d5cbcf..cc4a75341b594debac314706cbd6edfd92bef89c 100644 --- a/wemirr-platform-framework/common-framework-core/src/main/java/com/wemirr/framework/commons/JacksonUtils.java +++ b/wemirr-platform-framework/common-framework-core/src/main/java/com/wemirr/framework/commons/JacksonUtils.java @@ -500,4 +500,21 @@ public final class JacksonUtils { } } + public static T readTree(JsonParser p) { + try { + return defaultMapper.readTree(p); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + public static JsonNode readTree(String p) { + try { + return defaultMapper.readTree(p); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + } + + } \ No newline at end of file diff --git a/wemirr-platform-framework/common-framework-core/src/main/java/com/wemirr/framework/commons/entity/Result.java b/wemirr-platform-framework/common-framework-core/src/main/java/com/wemirr/framework/commons/entity/Result.java index 8fe322c988667cd14472f8460bf8838c42521493..22225aefd0672b74f104a3dd2481708568d51ca9 100644 --- a/wemirr-platform-framework/common-framework-core/src/main/java/com/wemirr/framework/commons/entity/Result.java +++ b/wemirr-platform-framework/common-framework-core/src/main/java/com/wemirr/framework/commons/entity/Result.java @@ -19,8 +19,8 @@ package com.wemirr.framework.commons.entity; -import com.alibaba.fastjson2.JSON; import com.fasterxml.jackson.annotation.JsonInclude; +import com.wemirr.framework.commons.JacksonUtils; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Getter; import lombok.NoArgsConstructor; @@ -228,7 +228,7 @@ public class Result implements Serializable { @Override public String toString() { - return JSON.toJSONString(this); + return JacksonUtils.toJson(this); } public static class Builder { diff --git a/wemirr-platform-framework/common-spring-boot-starter/src/main/java/com/wemirr/framework/boot/log/aspect/AccessLogAspect.java b/wemirr-platform-framework/common-spring-boot-starter/src/main/java/com/wemirr/framework/boot/log/aspect/AccessLogAspect.java index d3d29d8acd3973281b9a65a5a35c0dae02ef362a..4bf74222b1b1c2912089d2e07cf3e49b788e07d0 100644 --- a/wemirr-platform-framework/common-spring-boot-starter/src/main/java/com/wemirr/framework/boot/log/aspect/AccessLogAspect.java +++ b/wemirr-platform-framework/common-spring-boot-starter/src/main/java/com/wemirr/framework/boot/log/aspect/AccessLogAspect.java @@ -6,9 +6,6 @@ import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.URLUtil; import cn.hutool.extra.servlet.JakartaServletUtil; import cn.hutool.extra.spring.SpringUtil; -import com.alibaba.fastjson2.JSON; -import com.alibaba.fastjson2.JSONObject; -import com.alibaba.fastjson2.JSONWriter; import com.wemirr.framework.boot.log.AccessLogInfo; import com.wemirr.framework.boot.log.AccessLogProperties; import com.wemirr.framework.boot.log.event.AccessLogEvent; @@ -139,7 +136,7 @@ public class AccessLogAspect { logInfo.setMessage(result.getMessage()); } if (accessLog.response()) { - logInfo.setResponse(truncate(JSON.toJSONString(ret, JSONWriter.Feature.WriteMapNullValue), MAX_LENGTH)); + logInfo.setResponse(truncate(JacksonUtils.toJson(ret), MAX_LENGTH)); } return ret; } catch (Throwable e) { @@ -253,7 +250,7 @@ public class AccessLogAspect { List arguments = Arrays.stream(args) .filter(arg -> !(arg instanceof ServletRequest || arg instanceof ServletResponse || arg instanceof MultipartFile)) .collect(Collectors.toList()); - return JSONObject.toJSONString(arguments, JSONWriter.Feature.WriteMapNullValue); + return JacksonUtils.toJson(arguments); } catch (Exception e) { return "Args serialization failed"; } diff --git a/wemirr-platform-framework/common-spring-boot-starter/src/main/java/com/wemirr/framework/boot/security/AuthenticationContextConfiguration.java b/wemirr-platform-framework/common-spring-boot-starter/src/main/java/com/wemirr/framework/boot/security/AuthenticationContextConfiguration.java index 9acefada5e9ba490c36549a85a9e8cdc5ea39cd2..40ef15f473ba6a300e4e0b8728e626a717547a60 100644 --- a/wemirr-platform-framework/common-spring-boot-starter/src/main/java/com/wemirr/framework/boot/security/AuthenticationContextConfiguration.java +++ b/wemirr-platform-framework/common-spring-boot-starter/src/main/java/com/wemirr/framework/boot/security/AuthenticationContextConfiguration.java @@ -20,7 +20,6 @@ package com.wemirr.framework.boot.security; import cn.dev33.satoken.stp.StpUtil; -import com.alibaba.fastjson2.JSONObject; import com.wemirr.framework.commons.security.AuthenticationContext; import com.wemirr.framework.commons.security.DataPermission; import com.wemirr.framework.commons.threadlocal.ThreadLocalHolder; @@ -78,11 +77,9 @@ public class AuthenticationContextConfiguration { if (tokenInfo == null) { return null; } - UserInfoDetails userInfo = ((JSONObject) tokenInfo).toJavaObject(UserInfoDetails.class); + UserInfoDetails userInfo = (UserInfoDetails) tokenInfo; // 缓存到ThreadLocalHolder,后续异步线程可通过TTL获取 - if (userInfo != null) { - ThreadLocalHolder.set(USER_INFO, userInfo); - } + ThreadLocalHolder.set(USER_INFO, userInfo); return userInfo; } catch (Exception e) { // 异步线程中SaToken上下文可能不可用,这是正常情况 diff --git a/wemirr-platform-framework/db-spring-boot-starter/src/main/java/com/wemirr/framework/db/dynamic/core/redis/RedisDynamicDataSourceEventPublisher.java b/wemirr-platform-framework/db-spring-boot-starter/src/main/java/com/wemirr/framework/db/dynamic/core/redis/RedisDynamicDataSourceEventPublisher.java index 77e0784a12099e3dd8d282b8233de03eaf8d2503..3bf6fd289a2e3a2593668afa5d40c83133cc4117 100644 --- a/wemirr-platform-framework/db-spring-boot-starter/src/main/java/com/wemirr/framework/db/dynamic/core/redis/RedisDynamicDataSourceEventPublisher.java +++ b/wemirr-platform-framework/db-spring-boot-starter/src/main/java/com/wemirr/framework/db/dynamic/core/redis/RedisDynamicDataSourceEventPublisher.java @@ -19,7 +19,7 @@ package com.wemirr.framework.db.dynamic.core.redis; -import com.alibaba.fastjson2.JSON; +import com.wemirr.framework.commons.JacksonUtils; import com.wemirr.framework.db.dynamic.core.DynamicDataSourceEvent; import com.wemirr.framework.db.dynamic.core.DynamicDataSourceEventPublisher; import org.springframework.data.redis.core.StringRedisTemplate; @@ -32,7 +32,7 @@ public record RedisDynamicDataSourceEventPublisher(StringRedisTemplate redisTemp @Override public void publish(DynamicDataSourceEvent message) { log.info("redis publish - {}", message); - redisTemplate.convertAndSend(DEFAULT_EVENT_TOPIC, JSON.toJSONString(message)); + redisTemplate.convertAndSend(DEFAULT_EVENT_TOPIC, JacksonUtils.toJson(message)); } } diff --git a/wemirr-platform-framework/db-spring-boot-starter/src/main/java/com/wemirr/framework/db/mybatisplus/audit/AuditInterceptor.java b/wemirr-platform-framework/db-spring-boot-starter/src/main/java/com/wemirr/framework/db/mybatisplus/audit/AuditInterceptor.java index 2f49bfa208a167a6e67e37e3c2d03d614237dc2c..918edc42a0b062508442ebe3837be09a50e3d477 100644 --- a/wemirr-platform-framework/db-spring-boot-starter/src/main/java/com/wemirr/framework/db/mybatisplus/audit/AuditInterceptor.java +++ b/wemirr-platform-framework/db-spring-boot-starter/src/main/java/com/wemirr/framework/db/mybatisplus/audit/AuditInterceptor.java @@ -3,13 +3,13 @@ package com.wemirr.framework.db.mybatisplus.audit; import cn.hutool.core.util.ObjUtil; import cn.hutool.core.util.ReflectUtil; import cn.hutool.extra.spring.SpringUtil; -import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.annotation.FieldStrategy; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.TableFieldInfo; import com.baomidou.mybatisplus.core.metadata.TableInfo; import com.baomidou.mybatisplus.core.metadata.TableInfoHelper; import com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor; +import com.wemirr.framework.commons.JacksonUtils; import com.wemirr.framework.commons.entity.DictEnum; import com.wemirr.framework.db.properties.DatabaseProperties; import io.swagger.v3.oas.annotations.media.Schema; @@ -37,7 +37,7 @@ public class AuditInterceptor implements InnerInterceptor { @Override public void beforeUpdate(Executor executor, MappedStatement ms, Object parameter) { - log.debug("ms - {} - parameter - [{}]", ms.getId(), JSON.toJSONString(parameter)); + log.debug("ms - {} - parameter - [{}]", ms.getId(), JacksonUtils.toJson(parameter)); if (ms.getId().endsWith("updateById")) { return; } @@ -62,7 +62,7 @@ public class AuditInterceptor implements InnerInterceptor { return; } Map differences = compareDifferences(tableInfo, source, entity); - log.info("审计日志 - {}", JSON.toJSONString(differences)); + log.info("审计日志 - {}", JacksonUtils.toJson(differences)); } private Object getEntityFromParameter(Object parameter) { diff --git a/wemirr-platform-framework/db-spring-boot-starter/src/main/java/com/wemirr/framework/db/mybatisplus/handler/type/JsonListTypeHandler.java b/wemirr-platform-framework/db-spring-boot-starter/src/main/java/com/wemirr/framework/db/mybatisplus/handler/type/JsonListTypeHandler.java deleted file mode 100644 index 45bfe64a4ccfa0b695e71573ca75e801d27cb0f0..0000000000000000000000000000000000000000 --- a/wemirr-platform-framework/db-spring-boot-starter/src/main/java/com/wemirr/framework/db/mybatisplus/handler/type/JsonListTypeHandler.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.wemirr.framework.db.mybatisplus.handler.type; - -import com.alibaba.fastjson2.JSON; -import com.alibaba.fastjson2.TypeReference; -import com.baomidou.mybatisplus.extension.handlers.AbstractJsonTypeHandler; -import org.apache.ibatis.type.MappedTypes; - -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; - -/** - * 通用 JSON List 类型处理器 - *

- * 用于将 List 类型数据序列化为 JSON 存储到数据库,支持复杂对象列表的持久化 - * - * @author Levin - */ -@MappedTypes(value = {List.class}) -public class JsonListTypeHandler extends AbstractJsonTypeHandler> { - - public JsonListTypeHandler(Class type, Field field) { - super(type, field); - } - - public JsonListTypeHandler(Class type) { - super(type); - } - - @Override - public List parse(String json) { - if (json == null || json.isBlank()) { - return new ArrayList<>(); - } - try { - return JSON.parseObject(json, new TypeReference<>() {}); - } catch (Exception e) { - return new ArrayList<>(); - } - } - - @Override - public String toJson(List obj) { - return (obj == null || obj.isEmpty()) ? null : JSON.toJSONString(obj); - } -} diff --git a/wemirr-platform-framework/db-spring-boot-starter/src/main/java/com/wemirr/framework/db/mybatisplus/handler/type/JsonTypeHandler.java b/wemirr-platform-framework/db-spring-boot-starter/src/main/java/com/wemirr/framework/db/mybatisplus/handler/type/JsonTypeHandler.java deleted file mode 100644 index b55a5b53fd0c3f5a20cb1c80d1937ae0cd1b454c..0000000000000000000000000000000000000000 --- a/wemirr-platform-framework/db-spring-boot-starter/src/main/java/com/wemirr/framework/db/mybatisplus/handler/type/JsonTypeHandler.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) 2023 WEMIRR-PLATFORM Authors. All Rights Reserved. - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.wemirr.framework.db.mybatisplus.handler.type; - -import com.alibaba.fastjson2.JSON; -import com.alibaba.fastjson2.JSONObject; -import com.baomidou.mybatisplus.extension.handlers.AbstractJsonTypeHandler; -import org.apache.ibatis.type.MappedTypes; - -import java.lang.reflect.Field; - -/** - * 参考 {@link com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler} 实现 - * 字符串反序列化为 Set 时,如果元素的数值太小,会被处理成 Integer 类型,导致可能存在隐性的 BUG。 - * - * @author Levin - */ -@MappedTypes(value = {JSONObject.class}) -public class JsonTypeHandler extends AbstractJsonTypeHandler { - public JsonTypeHandler(Class type, Field field) { - super(type, field); - } - - public JsonTypeHandler(Class type) { - super(type); - } - - @Override - public JSONObject parse(String json) { - return JSON.parseObject(json); - } - - @Override - public String toJson(JSONObject obj) { - return obj == null ? null : obj.toJSONString(); - } - -} \ No newline at end of file diff --git a/wemirr-platform-framework/db-spring-boot-starter/src/main/java/com/wemirr/framework/db/mybatisplus/handler/type/MapTypeHandler.java b/wemirr-platform-framework/db-spring-boot-starter/src/main/java/com/wemirr/framework/db/mybatisplus/handler/type/MapTypeHandler.java deleted file mode 100644 index 19c272dd173c64f7188887bff7d094718dbb9e85..0000000000000000000000000000000000000000 --- a/wemirr-platform-framework/db-spring-boot-starter/src/main/java/com/wemirr/framework/db/mybatisplus/handler/type/MapTypeHandler.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.wemirr.framework.db.mybatisplus.handler.type; - -import com.alibaba.fastjson2.JSON; -import com.alibaba.fastjson2.TypeReference; -import com.baomidou.mybatisplus.extension.handlers.AbstractJsonTypeHandler; -import org.apache.ibatis.type.MappedTypes; - -import java.lang.reflect.Field; -import java.util.HashMap; -import java.util.Map; - -/** - * Map 类型 JSON 处理器 - *

- * 用于将 Map<String, Object> 类型序列化为 JSON 存储到数据库 - * - * @author Levin - */ -@MappedTypes(value = {Map.class}) -public class MapTypeHandler extends AbstractJsonTypeHandler> { - - public MapTypeHandler(Class type, Field field) { - super(type, field); - } - - public MapTypeHandler(Class type) { - super(type); - } - - @Override - public Map parse(String json) { - if (json == null || json.isBlank()) { - return new HashMap<>(); - } - try { - return JSON.parseObject(json, new TypeReference<>() {}); - } catch (Exception e) { - return new HashMap<>(); - } - } - - @Override - public String toJson(Map obj) { - return (obj == null || obj.isEmpty()) ? null : JSON.toJSONString(obj); - } -} diff --git a/wemirr-platform-framework/diff-log-spring-boot-starter/src/main/java/com/wemirr/framework/log/diff/service/impl/DefaultDiffLogServiceImpl.java b/wemirr-platform-framework/diff-log-spring-boot-starter/src/main/java/com/wemirr/framework/log/diff/service/impl/DefaultDiffLogServiceImpl.java index dd044a3c64bf1e3fe4bbf8a232695b40ef49db28..ec7d96fb3b6500bbe6dac0eab43294af33f77137 100644 --- a/wemirr-platform-framework/diff-log-spring-boot-starter/src/main/java/com/wemirr/framework/log/diff/service/impl/DefaultDiffLogServiceImpl.java +++ b/wemirr-platform-framework/diff-log-spring-boot-starter/src/main/java/com/wemirr/framework/log/diff/service/impl/DefaultDiffLogServiceImpl.java @@ -1,6 +1,6 @@ package com.wemirr.framework.log.diff.service.impl; -import com.alibaba.fastjson2.JSON; +import com.wemirr.framework.commons.JacksonUtils; import com.wemirr.framework.log.diff.domain.DiffLogInfo; import com.wemirr.framework.log.diff.domain.req.DiffLogInfoQueryReq; import com.wemirr.framework.log.diff.service.IDiffLogService; @@ -16,7 +16,7 @@ public class DefaultDiffLogServiceImpl implements IDiffLogService { @Override public void handler(DiffLogInfo diffLogInfo) { - log.info("[default diff log] {}", JSON.toJSONString(diffLogInfo)); + log.info("[default diff log] {}", JacksonUtils.toJson(diffLogInfo)); } @Override diff --git a/wemirr-platform-framework/feign-plugin-spring-boot-starter/src/main/java/com/wemirr/framework/feign/plugin/FeignPluginConfiguration.java b/wemirr-platform-framework/feign-plugin-spring-boot-starter/src/main/java/com/wemirr/framework/feign/plugin/FeignPluginConfiguration.java index d36a7b3f83b61edaa2364f361b3919d0d698fb4b..26f6936a7c75f9cb681cb4ab304a8cac46dce6e3 100644 --- a/wemirr-platform-framework/feign-plugin-spring-boot-starter/src/main/java/com/wemirr/framework/feign/plugin/FeignPluginConfiguration.java +++ b/wemirr-platform-framework/feign-plugin-spring-boot-starter/src/main/java/com/wemirr/framework/feign/plugin/FeignPluginConfiguration.java @@ -19,14 +19,10 @@ package com.wemirr.framework.feign.plugin; -import com.google.common.cache.Cache; -import com.google.common.cache.CacheBuilder; import com.wemirr.framework.feign.plugin.decoder.FeignResponseDecoder; import com.wemirr.framework.feign.plugin.mock.FeignPluginInterceptor; import com.wemirr.framework.feign.plugin.mock.MockLoadBalancerFeignClient; import com.wemirr.framework.feign.plugin.mock.MockProperties; -import com.wemirr.framework.feign.plugin.token.AutoRefreshTokenInterceptor; -import com.wemirr.framework.feign.plugin.token.AutoRefreshTokenProperties; import feign.Client; import feign.Logger; import feign.codec.Decoder; @@ -39,7 +35,6 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.http.HttpMessageConverters; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.cloud.client.ServiceInstance; -import org.springframework.cloud.client.discovery.DiscoveryClient; import org.springframework.cloud.client.loadbalancer.*; import org.springframework.cloud.loadbalancer.support.LoadBalancerClientFactory; import org.springframework.cloud.openfeign.loadbalancer.LoadBalancerFeignRequestTransformer; @@ -53,14 +48,13 @@ import org.springframework.core.annotation.Order; import org.springframework.web.client.RestTemplate; import java.util.List; -import java.util.concurrent.TimeUnit; /** * @author Levin */ @Slf4j @Configuration -@EnableConfigurationProperties(value = {FeignPluginProperties.class, AutoRefreshTokenProperties.class, MockProperties.class}) +@EnableConfigurationProperties(value = {FeignPluginProperties.class, MockProperties.class}) public class FeignPluginConfiguration { @Bean @@ -139,13 +133,4 @@ public class FeignPluginConfiguration { public FeignPluginInterceptor feignPluginInterceptor(FeignPluginProperties properties) { return new FeignPluginInterceptor(properties); } - - @Bean - @ConditionalOnProperty(prefix = AutoRefreshTokenProperties.TOKEN_PREFIX, name = "enabled", havingValue = "true") - public AutoRefreshTokenInterceptor feignTokenInterceptor(DiscoveryClient discoveryClient, AutoRefreshTokenProperties properties) { - final AutoRefreshTokenProperties.Cache cache = properties.getCache(); - Cache tokenCache = CacheBuilder.newBuilder().initialCapacity(cache.getInitialCapacity()) - .maximumSize(cache.getMaximumSize()).expireAfterWrite(cache.getExpire(), TimeUnit.SECONDS).build(); - return new AutoRefreshTokenInterceptor(discoveryClient, properties, tokenCache); - } } diff --git a/wemirr-platform-framework/feign-plugin-spring-boot-starter/src/main/java/com/wemirr/framework/feign/plugin/FeignPluginProperties.java b/wemirr-platform-framework/feign-plugin-spring-boot-starter/src/main/java/com/wemirr/framework/feign/plugin/FeignPluginProperties.java index 1bf8b3e1909d3a7cc10f2494f874544a47df2508..933dd4bd394ed8e33f1bca71d342caf25b49719b 100644 --- a/wemirr-platform-framework/feign-plugin-spring-boot-starter/src/main/java/com/wemirr/framework/feign/plugin/FeignPluginProperties.java +++ b/wemirr-platform-framework/feign-plugin-spring-boot-starter/src/main/java/com/wemirr/framework/feign/plugin/FeignPluginProperties.java @@ -20,7 +20,6 @@ package com.wemirr.framework.feign.plugin; import com.wemirr.framework.feign.plugin.mock.MockProperties; -import com.wemirr.framework.feign.plugin.token.AutoRefreshTokenProperties; import feign.Logger; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; @@ -47,6 +46,5 @@ public class FeignPluginProperties { */ private Logger.Level level = Logger.Level.FULL; private MockProperties mock = new MockProperties(); - private AutoRefreshTokenProperties token = new AutoRefreshTokenProperties(); } \ No newline at end of file diff --git a/wemirr-platform-framework/feign-plugin-spring-boot-starter/src/main/java/com/wemirr/framework/feign/plugin/token/AutoRefreshTokenInterceptor.java b/wemirr-platform-framework/feign-plugin-spring-boot-starter/src/main/java/com/wemirr/framework/feign/plugin/token/AutoRefreshTokenInterceptor.java deleted file mode 100644 index 457231f992450571b72bfba926b40dd95398690f..0000000000000000000000000000000000000000 --- a/wemirr-platform-framework/feign-plugin-spring-boot-starter/src/main/java/com/wemirr/framework/feign/plugin/token/AutoRefreshTokenInterceptor.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright (c) 2023 WEMIRR-PLATFORM Authors. All Rights Reserved. - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.wemirr.framework.feign.plugin.token; - -import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson2.JSONObject; -import com.google.common.cache.Cache; -import com.wemirr.framework.commons.exception.CheckedException; -import feign.RequestInterceptor; -import feign.RequestTemplate; -import lombok.RequiredArgsConstructor; -import lombok.SneakyThrows; -import lombok.extern.slf4j.Slf4j; -import org.springframework.cloud.client.ServiceInstance; -import org.springframework.cloud.client.discovery.DiscoveryClient; - -import java.net.URI; -import java.util.Collection; -import java.util.Map; - -/** - * @author Levin - */ -@Slf4j -@RequiredArgsConstructor -public class AutoRefreshTokenInterceptor implements RequestInterceptor { - - private final DiscoveryClient discoveryClient; - private final AutoRefreshTokenProperties properties; - private final Cache tokenCache; - - @SneakyThrows - @Override - public void apply(RequestTemplate template) { - final Map> headers = template.headers(); - if (!headers.containsKey(properties.getIncludeTokenHeader())) { - return; - } - final String tokenHeader = properties.getServerTokenHeader(); - if (template.headers().containsKey(tokenHeader)) { - log.debug("当前上下文中已包含token,跳过自动获取流程..."); - return; - } - template.header(tokenHeader, tokenCache.get(tokenHeader, this::loadCache)); - } - - @SneakyThrows - private String loadCache() { - final AutoRefreshTokenProperties.Login auth = properties.getLogin(); - // 设置访问参数 - JSONObject params = new JSONObject(); - params.put("clientId", auth.getClientId()); - params.put("clientSecret", auth.getClientSecret()); - params.put("username", auth.getUsername()); - params.put("password", auth.getPassword()); - params.put("tenantCode", auth.getTenantCode()); - params.put("loginType", auth.getLoginType()); - String url = properties.getUri(); - if (properties.isLoadBalance()) { - // 没找到好方案,只能用这种笨办法了 - final URI uri = new URI(properties.getUri()); - final String serviceId = uri.getHost(); - final ServiceInstance instance = discoveryClient.getInstances(serviceId).getFirst(); - final String hostAndPort = instance.getHost() + ":" + instance.getPort(); - url = StrUtil.replace(url, serviceId, hostAndPort); - } - throw CheckedException.badRequest("需要重构"); -// final String response = HttpUtil.createPost(url).body(params.toJSONString()).basicAuth(auth.getClientId(), auth.getClientSecret()).execute().body(); -// log.info("自动获取Token响应结果 - {}", response); -// final String accessToken = (String) JSONPath.eval(response, "data.accessToken"); -// if (StrUtil.isBlank(accessToken)) { -// throw CheckedException.badRequest("未获取到有效的 Token 数据"); -// } -// return "Bearer " + accessToken; - } -} diff --git a/wemirr-platform-framework/feign-plugin-spring-boot-starter/src/main/java/com/wemirr/framework/feign/plugin/token/AutoRefreshTokenProperties.java b/wemirr-platform-framework/feign-plugin-spring-boot-starter/src/main/java/com/wemirr/framework/feign/plugin/token/AutoRefreshTokenProperties.java index e15e8065025acffeef65f8969569aef32d137539..6aea7a9367595be5ef1e080ef40f58f64698edc7 100644 --- a/wemirr-platform-framework/feign-plugin-spring-boot-starter/src/main/java/com/wemirr/framework/feign/plugin/token/AutoRefreshTokenProperties.java +++ b/wemirr-platform-framework/feign-plugin-spring-boot-starter/src/main/java/com/wemirr/framework/feign/plugin/token/AutoRefreshTokenProperties.java @@ -20,7 +20,6 @@ package com.wemirr.framework.feign.plugin.token; import lombok.Data; -import org.springframework.boot.context.properties.ConfigurationProperties; /** * 自动刷新 Token 配置 @@ -30,7 +29,6 @@ import org.springframework.boot.context.properties.ConfigurationProperties; * @author Levin */ @Data -@ConfigurationProperties(prefix = AutoRefreshTokenProperties.TOKEN_PREFIX) public class AutoRefreshTokenProperties { public static final String TOKEN_PREFIX = "extend.feign.plugin.token"; @@ -38,70 +36,4 @@ public class AutoRefreshTokenProperties { public static final String X_AUTO_TOKEN_KEYWORD = "X-Auto-Token"; public static final String AUTHORIZATION = "Authorization"; - /** - * 是否启用自动 Token 刷新 - */ - private boolean enabled; - - /** - * 请求头标识(用于判断是否需要自动添加 Token) - */ - private String includeTokenHeader = X_AUTO_TOKEN_KEYWORD; - - /** - * Token 请求头名称 - */ - private String serverTokenHeader = AUTHORIZATION; - - /** - * 登录配置 - */ - private Login login; - - /** - * 认证服务 URI - */ - private String uri; - - /** - * 是否使用负载均衡(true: Feign 调用, false: 普通 HTTP) - */ - private boolean loadBalance; - - /** - * Token 缓存配置 - */ - private Cache cache = new Cache(); - - /** - * 登录凭证配置 - */ - @Data - public static class Login { - private String username; - private String password; - private String clientId = "wemirr"; - private String clientSecret = "wemirr"; - private String tenantCode; - private String loginType = "password"; - } - - /** - * Token 缓存配置 - */ - @Data - public static class Cache { - /** - * 过期时间(秒),默认 1 小时 - */ - private long expire = 3600L; - /** - * 初始容量 - */ - private int initialCapacity = 30; - /** - * 最大容量 - */ - private long maximumSize = 100; - } } diff --git a/wemirr-platform-framework/i18n-spring-boot-starter/src/main/java/com/wemirr/framework/i18n/core/I18nMessageRedisProvider.java b/wemirr-platform-framework/i18n-spring-boot-starter/src/main/java/com/wemirr/framework/i18n/core/I18nMessageRedisProvider.java index f040afe7fdd9dd6490ba1b3397b3a4cbf0fae1ea..e0b8d0af61d1349be9c6f86e107cdadd6628b083 100644 --- a/wemirr-platform-framework/i18n-spring-boot-starter/src/main/java/com/wemirr/framework/i18n/core/I18nMessageRedisProvider.java +++ b/wemirr-platform-framework/i18n-spring-boot-starter/src/main/java/com/wemirr/framework/i18n/core/I18nMessageRedisProvider.java @@ -19,7 +19,7 @@ package com.wemirr.framework.i18n.core; -import com.alibaba.fastjson2.JSON; +import com.wemirr.framework.commons.JacksonUtils; import com.wemirr.framework.i18n.I18nMessageProvider; import com.wemirr.framework.i18n.domain.I18nMessage; import com.wemirr.framework.i18n.domain.I18nRedisKeyConstants; @@ -87,6 +87,6 @@ public class I18nMessageRedisProvider implements I18nMessageProvider { * 发布单条国际化消息更新事件 */ public void publish(I18nMessage message) { - redisTemplate.convertAndSend(I18nRedisKeyConstants.CHANNEL_I18N_DATA_UPDATED, JSON.toJSONString(message)); + redisTemplate.convertAndSend(I18nRedisKeyConstants.CHANNEL_I18N_DATA_UPDATED, JacksonUtils.toJson(message)); } } diff --git a/wemirr-platform-framework/redis-plus-spring-boot-starter/pom.xml b/wemirr-platform-framework/redis-plus-spring-boot-starter/pom.xml index 490de3a4e4d469d696ff0f77016c05ddcdf0e8be..0a82b1fcdd0a229d130cb4cfdc199d545191baff 100644 --- a/wemirr-platform-framework/redis-plus-spring-boot-starter/pom.xml +++ b/wemirr-platform-framework/redis-plus-spring-boot-starter/pom.xml @@ -10,7 +10,7 @@ redis-plus-spring-boot-starter ${project.artifactId} - Redis 增强模块,集成 Redisson 分布式锁、消息监听、FastJSON2 序列化 + Redis 增强模块,集成 Redisson 分布式锁、消息监听 @@ -40,16 +40,6 @@ redisson-spring-boot-starter - - - com.alibaba.fastjson2 - fastjson2-extension - - - com.alibaba.fastjson2 - fastjson2-extension-spring6 - - cn.hutool diff --git a/wemirr-platform-framework/redis-plus-spring-boot-starter/src/main/java/com/wemirr/framework/redis/plus/RedisPlusAutoConfiguration.java b/wemirr-platform-framework/redis-plus-spring-boot-starter/src/main/java/com/wemirr/framework/redis/plus/RedisPlusAutoConfiguration.java index 288faf3c2d7b446fc5ca881a3f582c52f38ebeb3..614c0006d4e700b67e66f781a9606040c315c4c2 100644 --- a/wemirr-platform-framework/redis-plus-spring-boot-starter/src/main/java/com/wemirr/framework/redis/plus/RedisPlusAutoConfiguration.java +++ b/wemirr-platform-framework/redis-plus-spring-boot-starter/src/main/java/com/wemirr/framework/redis/plus/RedisPlusAutoConfiguration.java @@ -19,8 +19,12 @@ package com.wemirr.framework.redis.plus; -import com.alibaba.fastjson2.support.spring6.data.redis.GenericFastJsonRedisSerializer; +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import com.fasterxml.jackson.annotation.PropertyAccessor; import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator; +import com.wemirr.framework.commons.JacksonUtils; import com.wemirr.framework.redis.plus.interceptor.RedisLimitInterceptor; import com.wemirr.framework.redis.plus.interceptor.RedisLockInterceptor; import com.wemirr.framework.redis.plus.limit.DistributedRateLimiter; @@ -42,6 +46,7 @@ import org.springframework.core.annotation.Order; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer; /** @@ -125,8 +130,18 @@ public class RedisPlusAutoConfiguration { redisTemplate.setConnectionFactory(connectionFactory); // 字符串序列化器 StringRedisSerializer stringRedisSerializer = new StringRedisSerializer(); + ObjectMapper objectMapper = JacksonUtils.getObjectMapper(); + // 解决查询缓存转换异常的问题 + objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); + // 启用对泛型和多态的支持,自定义规则以支持Kotlin等Final类 + objectMapper.setDefaultTyping(new ObjectMapper.DefaultTypeResolverBuilder(ObjectMapper.DefaultTyping.NON_FINAL, LaissezFaireSubTypeValidator.instance) { + @Override + public boolean useForType(com.fasterxml.jackson.databind.JavaType t) { + return !com.fasterxml.jackson.core.TreeNode.class.isAssignableFrom(t.getRawClass()); + } + }.init(JsonTypeInfo.Id.CLASS, null).inclusion(JsonTypeInfo.As.PROPERTY)); // 存入redis时序列化值的序列化器 - GenericFastJsonRedisSerializer valueSerializer = new GenericFastJsonRedisSerializer(); + GenericJackson2JsonRedisSerializer valueSerializer = new GenericJackson2JsonRedisSerializer(objectMapper); redisTemplate.setKeySerializer(stringRedisSerializer); redisTemplate.setHashKeySerializer(stringRedisSerializer); redisTemplate.setDefaultSerializer(valueSerializer); diff --git a/wemirr-platform-framework/redis-plus-spring-boot-starter/src/main/java/com/wemirr/framework/redis/plus/cache/RedisCacheAutoConfiguration.java b/wemirr-platform-framework/redis-plus-spring-boot-starter/src/main/java/com/wemirr/framework/redis/plus/cache/RedisCacheAutoConfiguration.java index 7feacf0011711155c89717fbe5541f4551138857..47c33282efcac95dcb27a7a95916a28fd3555df2 100644 --- a/wemirr-platform-framework/redis-plus-spring-boot-starter/src/main/java/com/wemirr/framework/redis/plus/cache/RedisCacheAutoConfiguration.java +++ b/wemirr-platform-framework/redis-plus-spring-boot-starter/src/main/java/com/wemirr/framework/redis/plus/cache/RedisCacheAutoConfiguration.java @@ -22,7 +22,7 @@ package com.wemirr.framework.redis.plus.cache; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson2.JSON; +import com.wemirr.framework.commons.JacksonUtils; import com.wemirr.framework.commons.util.DigestUtil; import com.wemirr.framework.redis.plus.RedisPlusProperties; import lombok.RequiredArgsConstructor; @@ -85,7 +85,7 @@ public class RedisCacheAutoConfiguration implements CachingConfigurer { keyMap.put("params-" + i, params[i]); } } - final String jsonText = JSON.toJSONString(keyMap); + final String jsonText = JacksonUtils.toJson(keyMap); // 使用MD5生成位移key return DigestUtil.md5Hex(jsonText); }; diff --git a/wemirr-platform-framework/redis-plus-spring-boot-starter/src/main/java/com/wemirr/framework/redis/plus/listener/AbstractMessageEventListener.java b/wemirr-platform-framework/redis-plus-spring-boot-starter/src/main/java/com/wemirr/framework/redis/plus/listener/AbstractMessageEventListener.java index d77a4ac2ab5df10e994988305adcdbe984534677..50828fb80084b31a2d15eef476bdc3a7d2753f9d 100644 --- a/wemirr-platform-framework/redis-plus-spring-boot-starter/src/main/java/com/wemirr/framework/redis/plus/listener/AbstractMessageEventListener.java +++ b/wemirr-platform-framework/redis-plus-spring-boot-starter/src/main/java/com/wemirr/framework/redis/plus/listener/AbstractMessageEventListener.java @@ -21,7 +21,7 @@ package com.wemirr.framework.redis.plus.listener; import cn.hutool.core.util.StrUtil; import cn.hutool.extra.spring.SpringUtil; -import com.alibaba.fastjson2.JSON; +import com.wemirr.framework.commons.JacksonUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.data.redis.connection.Message; @@ -57,7 +57,7 @@ public interface AbstractMessageEventListener extends MessageEventListener { byte[] bodyBytes = message.getBody(); String body = stringSerializer.deserialize(bodyBytes); try { - handleMessage(JSON.parseObject(body, type())); + handleMessage(JacksonUtils.readValue(body, type())); } catch (Exception e) { if (type().equals(String.class)) { handleMessage((T) body); diff --git a/wemirr-platform-framework/redis-plus-spring-boot-starter/src/main/java/com/wemirr/framework/redis/plus/utils/RedisAopUtils.java b/wemirr-platform-framework/redis-plus-spring-boot-starter/src/main/java/com/wemirr/framework/redis/plus/utils/RedisAopUtils.java index 17dd3d489be882f9447c6e0dab00f2b65075299b..e0839e06a9758ffc2d19ae345bd96551ae9ce388 100644 --- a/wemirr-platform-framework/redis-plus-spring-boot-starter/src/main/java/com/wemirr/framework/redis/plus/utils/RedisAopUtils.java +++ b/wemirr-platform-framework/redis-plus-spring-boot-starter/src/main/java/com/wemirr/framework/redis/plus/utils/RedisAopUtils.java @@ -19,7 +19,7 @@ package com.wemirr.framework.redis.plus.utils; -import com.alibaba.fastjson2.JSONObject; +import com.wemirr.framework.commons.JacksonUtils; import com.wemirr.framework.commons.util.DigestUtil; import org.apache.commons.lang3.StringUtils; import org.aspectj.lang.ProceedingJoinPoint; @@ -103,7 +103,7 @@ public class RedisAopUtils { // key表达式 key = StringUtils.isEmpty(key) ? "" : "_" + key; // 使用MD5生成位移key - return DigestUtil.md5Hex(JSONObject.toJSONString(keyMap) + key).toUpperCase(); + return DigestUtil.md5Hex(JacksonUtils.toJson(keyMap) + key).toUpperCase(); } } diff --git a/wemirr-platform-framework/robot-spring-boot-starter/src/main/java/com/wemirr/framework/robot/handler/DefaultIErrorMessageHandler.java b/wemirr-platform-framework/robot-spring-boot-starter/src/main/java/com/wemirr/framework/robot/handler/DefaultIErrorMessageHandler.java index 2d7fde4f5368728cfe2a8c20e325338f2f1664cb..1e1c2e73a093ee929cc11d91cfd48ca3ec4c74b7 100644 --- a/wemirr-platform-framework/robot-spring-boot-starter/src/main/java/com/wemirr/framework/robot/handler/DefaultIErrorMessageHandler.java +++ b/wemirr-platform-framework/robot-spring-boot-starter/src/main/java/com/wemirr/framework/robot/handler/DefaultIErrorMessageHandler.java @@ -21,7 +21,7 @@ package com.wemirr.framework.robot.handler; import cn.hutool.core.exceptions.ExceptionUtil; import cn.hutool.extra.servlet.JakartaServletUtil; -import com.alibaba.fastjson2.JSON; +import com.wemirr.framework.commons.JacksonUtils; import jakarta.servlet.http.HttpServletRequest; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.Signature; @@ -53,7 +53,7 @@ public class DefaultIErrorMessageHandler implements IErrorMessageHandler { error.append(LINE_BREAK).append("IP: ").append(ip); Signature signature = joinPoint.getSignature(); error.append(LINE_BREAK).append("Method: ").append(signature.getDeclaringTypeName()).append(".").append(signature.getName()); - error.append(LINE_BREAK).append("Args: ").append(JSON.toJSONString(joinPoint.getArgs())); + error.append(LINE_BREAK).append("Args: ").append(JacksonUtils.toJson(joinPoint.getArgs())); error.append(LINE_BREAK).append("Exception: ").append(ExceptionUtil.stacktraceToString(e)); return error.toString(); } diff --git a/wemirr-platform-framework/robot-spring-boot-starter/src/main/java/com/wemirr/framework/robot/message/push/RobotMessageHandler.java b/wemirr-platform-framework/robot-spring-boot-starter/src/main/java/com/wemirr/framework/robot/message/push/RobotMessageHandler.java index 6c66bba46a0430528a141d9ef9e48cb301152d11..9b2c6fdca3df71f07da5e395e65b442d9082fc9d 100644 --- a/wemirr-platform-framework/robot-spring-boot-starter/src/main/java/com/wemirr/framework/robot/message/push/RobotMessageHandler.java +++ b/wemirr-platform-framework/robot-spring-boot-starter/src/main/java/com/wemirr/framework/robot/message/push/RobotMessageHandler.java @@ -19,7 +19,7 @@ package com.wemirr.framework.robot.message.push; -import com.alibaba.fastjson2.JSON; +import com.wemirr.framework.commons.JacksonUtils; import com.wemirr.framework.robot.emums.NotifyType; import com.wemirr.framework.robot.message.RobotMessage; @@ -76,7 +76,7 @@ public interface RobotMessageHandler { */ default String request(Map body) { return cn.hutool.http.HttpRequest.post(this.getUrl()) - .body(JSON.toJSONString(body)) + .body(JacksonUtils.toJson(body)) .timeout(5000) .execute() .body(); diff --git a/wemirr-platform-framework/security-spring-boot-starter/pom.xml b/wemirr-platform-framework/security-spring-boot-starter/pom.xml index 1597a1363fe0695560c9e077cc80f845e85d2f4c..c32a89cd24071d642f7de13b62fd49338812891d 100644 --- a/wemirr-platform-framework/security-spring-boot-starter/pom.xml +++ b/wemirr-platform-framework/security-spring-boot-starter/pom.xml @@ -40,7 +40,7 @@ cn.dev33 - sa-token-fastjson2 + sa-token-jackson cn.dev33 diff --git a/wemirr-platform-framework/websocket-spring-boot-starter/src/main/java/com/wemirr/framework/websocket/redis/DefaultRedisReceiver.java b/wemirr-platform-framework/websocket-spring-boot-starter/src/main/java/com/wemirr/framework/websocket/redis/DefaultRedisReceiver.java index 7e30b5d90ca80e20bc8d1db666d5287862e40afe..37fa96bb4989ceb80eb0c023ddd8750f69733c40 100644 --- a/wemirr-platform-framework/websocket-spring-boot-starter/src/main/java/com/wemirr/framework/websocket/redis/DefaultRedisReceiver.java +++ b/wemirr-platform-framework/websocket-spring-boot-starter/src/main/java/com/wemirr/framework/websocket/redis/DefaultRedisReceiver.java @@ -19,7 +19,9 @@ package com.wemirr.framework.websocket.redis; -import com.alibaba.fastjson2.JSONObject; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.JsonNode; +import com.wemirr.framework.commons.JacksonUtils; import com.wemirr.framework.websocket.WebSocketManager; import com.wemirr.framework.websocket.redis.action.Action; import lombok.RequiredArgsConstructor; @@ -43,13 +45,14 @@ public class DefaultRedisReceiver implements RedisReceiver { @Override public void receiveMessage(String message) { log.info(message); - JSONObject object = JSONObject.parseObject(message); - if (!object.containsKey(Action.ACTION)) { + JsonNode object = JacksonUtils.toObj(message); + if (!object.has(Action.ACTION)) { return; } - String actionName = object.getString(Action.ACTION); + String actionName = object.get(Action.ACTION).asText(); Action action = getAction(actionName); - action.doMessage(getWebSocketManager(), object); + action.doMessage(getWebSocketManager(), JacksonUtils.treeToValue(object, new TypeReference<>() { + })); } protected Action getAction(String actionName) { diff --git a/wemirr-platform-framework/websocket-spring-boot-starter/src/main/java/com/wemirr/framework/websocket/redis/RedisWebSocketManager.java b/wemirr-platform-framework/websocket-spring-boot-starter/src/main/java/com/wemirr/framework/websocket/redis/RedisWebSocketManager.java index 9d06510c26b68cf5519efd9816d5e0236ced3253..9546fe54b2804e2205d9b18d6cd6d8c8268cecfa 100644 --- a/wemirr-platform-framework/websocket-spring-boot-starter/src/main/java/com/wemirr/framework/websocket/redis/RedisWebSocketManager.java +++ b/wemirr-platform-framework/websocket-spring-boot-starter/src/main/java/com/wemirr/framework/websocket/redis/RedisWebSocketManager.java @@ -19,7 +19,8 @@ package com.wemirr.framework.websocket.redis; import cn.hutool.extra.spring.SpringUtil; -import com.alibaba.fastjson2.JSONObject; +import com.fasterxml.jackson.databind.JsonNode; +import com.wemirr.framework.commons.JacksonUtils; import com.wemirr.framework.websocket.WebSocket; import com.wemirr.framework.websocket.memory.MemWebSocketManager; import com.wemirr.framework.websocket.redis.action.Action; @@ -31,7 +32,9 @@ import org.springframework.data.redis.core.ListOperations; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.ValueOperations; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.concurrent.TimeUnit; /** @@ -64,8 +67,8 @@ public class RedisWebSocketManager extends MemWebSocketManager { List msgList = listOps.range(queueKey, 0, -1); if (!msgList.isEmpty()) { for (String msgStr : msgList) { - JSONObject msgObj = JSONObject.parseObject(msgStr); - String message = msgObj.getString(Action.MESSAGE); + JsonNode msgObj = JacksonUtils.toObj(msgStr); + String message = msgObj.get(Action.MESSAGE).asText(); // 发送消息给用户 WebSocketUtil.sendMessage(webSocket.getSession(), message); } @@ -81,11 +84,11 @@ public class RedisWebSocketManager extends MemWebSocketManager { if (containsKey) { super.remove(identifier); } else { - JSONObject map = new JSONObject(); + Map map = new HashMap<>(); map.put(Action.ACTION, RemoveAction.class.getName()); map.put(Action.IDENTIFIER, identifier); // 在websocket频道上发布发送消息的消息 - redisTemplate.convertAndSend(getChannel(), map.toJSONString()); + redisTemplate.convertAndSend(getChannel(), JacksonUtils.toJson(map)); } // 在线数量减1 countChange(-1); @@ -111,26 +114,26 @@ public class RedisWebSocketManager extends MemWebSocketManager { String queueKey = "offline:messages:" + identifier; // 构建消息对象(可包含动作、内容等信息) - JSONObject map = new JSONObject(); + Map map = new HashMap<>(3); map.put(Action.ACTION, SendMessageAction.class.getName()); map.put(Action.IDENTIFIER, identifier); map.put(Action.MESSAGE, message); // 存入队列左侧 - listOps.leftPush(queueKey, map.toJSONString()); + listOps.leftPush(queueKey, JacksonUtils.toJson(map)); // 设置过期时间(7天) redisTemplate.expire(queueKey, 7, TimeUnit.DAYS); // 在websocket频道上发布发送消息的消息 - redisTemplate.convertAndSend(getChannel(), map.toJSONString()); + redisTemplate.convertAndSend(getChannel(), JacksonUtils.toJson(map)); } @Override public void broadcast(String message) { - JSONObject map = new JSONObject(); + Map map = new HashMap<>(); map.put(Action.ACTION, BroadCastAction.class.getName()); map.put(Action.MESSAGE, message); final StringRedisTemplate redisTemplate = SpringUtil.getBean(StringRedisTemplate.class); // 在websocket频道上发布广播的消息 - redisTemplate.convertAndSend(getChannel(), map.toJSONString()); + redisTemplate.convertAndSend(getChannel(), JacksonUtils.toJson(map)); } protected String getChannel() { diff --git a/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/configuration/rule/BlacklistHelper.java b/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/configuration/rule/BlacklistHelper.java index f658e5c35de8dff23023653cdcbe16e501fdf13f..3092c39174e33a2e559d81ce823e166a1a350f97 100644 --- a/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/configuration/rule/BlacklistHelper.java +++ b/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/configuration/rule/BlacklistHelper.java @@ -20,9 +20,9 @@ package com.wemirr.platform.gateway.configuration.rule; import cn.hutool.core.collection.CollectionUtil; -import com.alibaba.fastjson2.JSON; import com.alibaba.nacos.common.utils.UuidUtils; import com.google.common.collect.Lists; +import com.wemirr.framework.commons.JacksonUtils; import com.wemirr.platform.gateway.rest.domain.BlacklistRule; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; @@ -80,7 +80,7 @@ public class BlacklistHelper implements GatewayRule { if (object == null) { return null; } - return JSON.parseObject(object.toString(), BlacklistRule.class); + return JacksonUtils.toBean(object.toString(), BlacklistRule.class); } public List query() { @@ -90,7 +90,7 @@ public class BlacklistHelper implements GatewayRule { } return stringRedisTemplate.opsForHash().multiGet(RULE_BLACKLIST.hashKey(), keys).stream() .map(object -> { - BlacklistRule rule = JSON.parseObject(object.toString(), BlacklistRule.class); + BlacklistRule rule = JacksonUtils.toBean(object.toString(), BlacklistRule.class); if (rule != null) { final Object visits = Optional.ofNullable(stringRedisTemplate.opsForHash() .get(RULE_BLACKLIST.visitsKey(), rule.getId())).orElse("0"); @@ -123,7 +123,7 @@ public class BlacklistHelper implements GatewayRule { if (rule.getCreateTime() == null) { rule.setCreateTime(Instant.now()); } - final String content = JSON.toJSONString(rule); + final String content = JacksonUtils.toJson(rule); stringRedisTemplate.opsForHash().put(RULE_BLACKLIST.hashKey(), rule.getId(), content); } diff --git a/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/configuration/rule/GatewayRule.java b/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/configuration/rule/GatewayRule.java index f80c4d1e3711076e3e135e5903d59f113042c7ee..8c75b0061c120b4ef0b8c8e4b2f45aca0f685aca 100644 --- a/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/configuration/rule/GatewayRule.java +++ b/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/configuration/rule/GatewayRule.java @@ -20,7 +20,7 @@ package com.wemirr.platform.gateway.configuration.rule; import cn.hutool.core.collection.CollectionUtil; -import com.alibaba.fastjson2.JSON; +import com.wemirr.framework.commons.JacksonUtils; import com.wemirr.platform.gateway.rest.domain.BlacklistRule; import com.wemirr.platform.gateway.rest.domain.CommonRule; import com.wemirr.platform.gateway.rest.domain.LimitRule; @@ -73,7 +73,7 @@ public interface GatewayRule { return null; } for (Object object : objects) { - CommonRule rule = JSON.parseObject(object.toString(), CommonRule.class); + CommonRule rule = JacksonUtils.readValue(object.toString(), CommonRule.class); if (rule.getStatus() == null || !rule.getStatus() || StringUtils.isBlank(rule.getPath())) { continue; } @@ -86,7 +86,7 @@ public interface GatewayRule { final boolean match = ANT_PATH_MATCHER.match(rule.getPath(), path); final boolean methodFilter = StringUtils.equals(rule.getMethod(), "ALL") || StringUtils.equalsIgnoreCase(rule.getMethod(), Objects.requireNonNull(httpMethod).name()); if (match && methodFilter) { - return JSON.parseObject(object.toString(), (Type) gatewayRule.clazz); + return JacksonUtils.readValue(object.toString(), (Type) gatewayRule.clazz); } } return null; diff --git a/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/configuration/rule/LimitHelper.java b/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/configuration/rule/LimitHelper.java index 9ea577938806fc7497e288e47bbf7bdca5b7147b..0a9d3adf63fccb31b13d72b37893b720ef2cbb43 100644 --- a/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/configuration/rule/LimitHelper.java +++ b/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/configuration/rule/LimitHelper.java @@ -21,8 +21,8 @@ package com.wemirr.platform.gateway.configuration.rule; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.IdUtil; -import com.alibaba.fastjson2.JSON; import com.google.common.collect.Lists; +import com.wemirr.framework.commons.JacksonUtils; import com.wemirr.platform.gateway.rest.domain.BlacklistRule; import com.wemirr.platform.gateway.rest.domain.LimitRule; import lombok.RequiredArgsConstructor; @@ -61,7 +61,7 @@ public class LimitHelper implements GatewayRule { } return stringRedisTemplate.opsForHash().multiGet(RULE_LIMIT.hashKey(), keys).stream() .map(object -> { - LimitRule rule = JSON.parseObject(object.toString(), LimitRule.class); + LimitRule rule = JacksonUtils.toBean(object.toString(), LimitRule.class); if (rule != null) { final Object visits = Optional.ofNullable(stringRedisTemplate.opsForHash() .get(RULE_LIMIT.visitsKey(), rule.getId())).orElse("0"); @@ -82,7 +82,7 @@ public class LimitHelper implements GatewayRule { if (rule.getCreateTime() == null) { rule.setCreateTime(Instant.now()); } - stringRedisTemplate.opsForHash().put(RULE_LIMIT.hashKey(), rule.getId(), JSON.toJSONString(rule)); + stringRedisTemplate.opsForHash().put(RULE_LIMIT.hashKey(), rule.getId(), JacksonUtils.toJson(rule)); } public void delete(String id) { diff --git a/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/configuration/rule/RouteRuleHelper.java b/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/configuration/rule/RouteRuleHelper.java index 44c4e7a05191faa1eae16734711b8a8e9474a8a6..d8de0203d1d63b06406eb3f40c95d95f02a3f052 100644 --- a/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/configuration/rule/RouteRuleHelper.java +++ b/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/configuration/rule/RouteRuleHelper.java @@ -22,9 +22,9 @@ package com.wemirr.platform.gateway.configuration.rule; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.URLUtil; -import com.alibaba.fastjson2.JSON; import com.google.common.collect.Lists; import com.google.common.collect.Maps; +import com.wemirr.framework.commons.JacksonUtils; import com.wemirr.framework.commons.exception.CheckedException; import com.wemirr.platform.gateway.rest.domain.RouteRule; import com.wemirr.platform.gateway.route.RedisRouteDynamicGatewayService; @@ -78,8 +78,8 @@ public class RouteRuleHelper { if (rule.getDynamic() == null) { rule.setDynamic(true); } - log.debug("请求参数 - {}", JSON.toJSONString(rule)); - stringRedisTemplate.opsForHash().put(GATEWAY_RULE_ROUTE, rule.getId(), JSON.toJSONString(rule)); + log.debug("请求参数 - {}", JacksonUtils.toJson(rule)); + stringRedisTemplate.opsForHash().put(GATEWAY_RULE_ROUTE, rule.getId(), JacksonUtils.toJson(rule)); } private boolean publish(String id) { @@ -88,7 +88,7 @@ public class RouteRuleHelper { if (object == null) { return false; } - RouteRule rule = JSON.parseObject(object.toString(), RouteRule.class); + RouteRule rule = JacksonUtils.toBean(object.toString(), RouteRule.class); RouteDefinition routeDefinition = new RouteDefinition(); routeDefinition.setId(rule.getId()); routeDefinition.setOrder(rule.getOrder()); @@ -118,7 +118,7 @@ public class RouteRuleHelper { if (services.contains(rule.getName())) { rule.setStatus(true); redisRouteDynamicGatewayService.saveOrUpdate(routeDefinition); - stringRedisTemplate.opsForHash().put(GATEWAY_RULE_ROUTE, rule.getId(), JSON.toJSONString(rule)); + stringRedisTemplate.opsForHash().put(GATEWAY_RULE_ROUTE, rule.getId(), JacksonUtils.toJson(rule)); return true; } return false; @@ -139,10 +139,10 @@ public class RouteRuleHelper { throw CheckedException.badRequest("发布失败,服务未注册"); } } else { - RouteRule rule = JSON.parseObject(object.toString(), RouteRule.class); + RouteRule rule = JacksonUtils.toBean(object.toString(), RouteRule.class); rule.setStatus(null); rule.setStatus(false); - stringRedisTemplate.opsForHash().put(GATEWAY_RULE_ROUTE, rule.getId(), JSON.toJSONString(rule)); + stringRedisTemplate.opsForHash().put(GATEWAY_RULE_ROUTE, rule.getId(), JacksonUtils.toJson(rule)); redisRouteDynamicGatewayService.delete(id); } } @@ -158,7 +158,7 @@ public class RouteRuleHelper { if (object == null) { return null; } - RouteRule rule = JSON.parseObject(object.toString(), RouteRule.class); + RouteRule rule = JacksonUtils.toBean(object.toString(), RouteRule.class); if (rule.getStatus() == null) { rule.setStatus(false); } else if (rule.getStatus()) { diff --git a/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/filter/BlackWhiteListGatewayFilterFactory.java b/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/filter/BlackWhiteListGatewayFilterFactory.java index a8b9b292359ab6a680ed600b302cdf290b8c2878..6a9b3a5f70e35f6365b1f2f6f13fa9aa6619b655 100644 --- a/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/filter/BlackWhiteListGatewayFilterFactory.java +++ b/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/filter/BlackWhiteListGatewayFilterFactory.java @@ -19,9 +19,8 @@ package com.wemirr.platform.gateway.filter; -import com.alibaba.fastjson2.JSON; -import com.alibaba.fastjson2.JSONObject; import com.google.common.net.HttpHeaders; +import com.wemirr.framework.commons.JacksonUtils; import lombok.AllArgsConstructor; import lombok.Data; import lombok.extern.slf4j.Slf4j; @@ -38,7 +37,9 @@ import reactor.core.publisher.Mono; import java.net.InetAddress; import java.net.InetSocketAddress; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * 黑白名单网关过滤器 @@ -133,12 +134,12 @@ public class BlackWhiteListGatewayFilterFactory extends AbstractGatewayFilterFac ServerHttpResponse response = exchange.getResponse(); response.setStatusCode(HttpStatus.FORBIDDEN); response.getHeaders().set(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE); - JSONObject result = new JSONObject(); + Map result = new HashMap<>(); result.put("code", HttpStatus.FORBIDDEN.value()); result.put("message", message); result.put("successful", false); result.put("timestamp", System.currentTimeMillis()); - return response.writeWith(Mono.just(response.bufferFactory().wrap(JSON.toJSONBytes(result)))); + return response.writeWith(Mono.just(response.bufferFactory().wrap(JacksonUtils.toJsonBytes(result)))); } @AllArgsConstructor diff --git a/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/handler/ExceptionFallbackHandler.java b/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/handler/ExceptionFallbackHandler.java index 7ad08625ce2136e387888a503f23f359c4788e3c..8ff6d48d047ec83ee9e62d6e937d99cd4332ef3d 100644 --- a/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/handler/ExceptionFallbackHandler.java +++ b/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/handler/ExceptionFallbackHandler.java @@ -19,7 +19,6 @@ package com.wemirr.platform.gateway.handler; -import com.alibaba.fastjson2.JSONObject; import jakarta.annotation.Nonnull; import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpStatus; @@ -31,6 +30,8 @@ import org.springframework.web.reactive.function.server.ServerRequest; import org.springframework.web.reactive.function.server.ServerResponse; import reactor.core.publisher.Mono; +import java.util.HashMap; +import java.util.Map; import java.util.Optional; import static org.springframework.cloud.gateway.support.ServerWebExchangeUtils.GATEWAY_ORIGINAL_REQUEST_URL_ATTR; @@ -50,7 +51,7 @@ public class ExceptionFallbackHandler implements HandlerFunction public Mono handle(ServerRequest serverRequest) { Optional originalUris = serverRequest.attribute(GATEWAY_ORIGINAL_REQUEST_URL_ATTR); originalUris.ifPresent(originalUri -> log.error("网关执行请求:{}失败,服务降级处理", originalUri)); - JSONObject obj = new JSONObject(); + Map obj = new HashMap<>(); obj.put("code", HttpStatus.SERVICE_UNAVAILABLE.value()); obj.put("messageId", HttpStatus.SERVICE_UNAVAILABLE.value()); obj.put("message", "服务繁忙,请稍后再试"); diff --git a/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/rest/DiscoveryController.java b/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/rest/DiscoveryController.java index ddf26b14ecfbe9e62d051ff450636468fc93b9ba..08005aa0105efba66c28a3576303c5220adcc91a 100644 --- a/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/rest/DiscoveryController.java +++ b/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/rest/DiscoveryController.java @@ -19,7 +19,6 @@ package com.wemirr.platform.gateway.rest; -import com.alibaba.fastjson2.JSONObject; import com.wemirr.framework.commons.entity.Result; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -28,7 +27,9 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.HashMap; import java.util.List; +import java.util.Map; import static java.util.stream.Collectors.toList; @@ -49,10 +50,10 @@ public class DiscoveryController { } @GetMapping("/dict") - public Result> dict() { + public Result>> dict() { final List services = discoveryClient.getServices(); return Result.success(services.stream().map(serviceId -> { - JSONObject object = new JSONObject(); + Map object = new HashMap<>(); object.put("serviceId", serviceId); return object; }).collect(toList())); diff --git a/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/rest/LimitController.java b/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/rest/LimitController.java index 463135eda2ed706d4ee5748cd5ffbc5463a46361..41e5086188bd082f191a63e0c709fd4e9124735f 100644 --- a/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/rest/LimitController.java +++ b/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/rest/LimitController.java @@ -20,14 +20,15 @@ package com.wemirr.platform.gateway.rest; import cn.hutool.core.util.IdUtil; -import com.alibaba.fastjson2.JSONObject; import com.wemirr.framework.commons.entity.Result; import com.wemirr.platform.gateway.configuration.rule.LimitHelper; import com.wemirr.platform.gateway.rest.domain.LimitRule; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * @author Levin @@ -40,8 +41,8 @@ public class LimitController { private final LimitHelper limitHelper; @GetMapping - public Result query() { - JSONObject data = new JSONObject(); + public Result> query() { + Map data = new HashMap<>(5); final List limitRules = limitHelper.query(); data.put("total", limitRules.size()); data.put("records", limitRules); diff --git a/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/rest/RouteController.java b/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/rest/RouteController.java index ba85d0fba4051f27ad45091f683b042e8d36f49e..5d3f55a29e1783e068e6775193df97e03e5d9beb 100644 --- a/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/rest/RouteController.java +++ b/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/rest/RouteController.java @@ -19,7 +19,6 @@ package com.wemirr.platform.gateway.rest; -import com.alibaba.fastjson2.JSONObject; import com.wemirr.framework.commons.entity.Result; import com.wemirr.platform.gateway.configuration.rule.RouteRuleHelper; import com.wemirr.platform.gateway.rest.domain.RouteRule; @@ -29,7 +28,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * http://localhost:15000/actuator/gateway/routes @@ -45,8 +46,8 @@ public class RouteController { private final RouteRuleHelper routeRuleHelper; @GetMapping - public Result query() { - JSONObject data = new JSONObject(); + public Result> query() { + Map data = new HashMap<>(5); final List limitRules = routeRuleHelper.query(); data.put("total", limitRules.size()); data.put("records", limitRules); diff --git a/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/route/NacosRouteDefinitionRepository.java b/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/route/NacosRouteDefinitionRepository.java index 3a317b41d9dcd3f0acdd8a3874656faa2e9bdd45..15cbf45fbcc6678a0cd8279719b1168ba3afa810 100644 --- a/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/route/NacosRouteDefinitionRepository.java +++ b/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/route/NacosRouteDefinitionRepository.java @@ -20,10 +20,11 @@ package com.wemirr.platform.gateway.route; import com.alibaba.cloud.nacos.NacosConfigManager; -import com.alibaba.fastjson2.JSONArray; import com.alibaba.nacos.api.config.listener.Listener; import com.alibaba.nacos.api.exception.NacosException; +import com.fasterxml.jackson.core.type.TypeReference; import com.google.common.collect.Lists; +import com.wemirr.framework.commons.JacksonUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.cloud.gateway.event.RefreshRoutesEvent; @@ -45,19 +46,19 @@ import java.util.concurrent.Executor; */ @Slf4j public class NacosRouteDefinitionRepository implements RouteDefinitionRepository { - + private static final String SCG_DATA_ID = "scg-routes"; private static final String SCG_GROUP_ID = "SCG_GATEWAY"; - + private final ApplicationEventPublisher publisher; private final NacosConfigManager nacosConfigManager; - + public NacosRouteDefinitionRepository(ApplicationEventPublisher publisher, NacosConfigManager nacosConfigManager) { this.publisher = publisher; this.nacosConfigManager = nacosConfigManager; addListener(); } - + @Override public Flux getRouteDefinitions() { try { @@ -69,19 +70,19 @@ public class NacosRouteDefinitionRepository implements RouteDefinitionRepository } return Flux.fromIterable(Lists.newArrayList()); } - + /** * 添加Nacos监听 */ private void addListener() { try { this.nacosConfigManager.getConfigService().addListener(SCG_DATA_ID, SCG_GROUP_ID, new Listener() { - + @Override public Executor getExecutor() { return null; } - + @Override public void receiveConfigInfo(String configInfo) { publisher.publishEvent(new RefreshRoutesEvent(this)); @@ -91,20 +92,21 @@ public class NacosRouteDefinitionRepository implements RouteDefinitionRepository log.error("nacos-addListener-error", e); } } - + @Override public Mono save(Mono route) { return null; } - + @Override public Mono delete(Mono routeId) { return null; } - + private List getListByStr(String content) { if (StringUtils.isNotBlank(content)) { - return JSONArray.parseArray(content, RouteDefinition.class); + return JacksonUtils.readValue(content, new TypeReference<>() { + }); } return new ArrayList<>(0); } diff --git a/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/route/RedisRouteDefinitionRepository.java b/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/route/RedisRouteDefinitionRepository.java index 5983458cd9841e43fa9113eea351273737ec3da6..6483ab300db3d50853abeaa65f778885b6676541 100644 --- a/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/route/RedisRouteDefinitionRepository.java +++ b/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/route/RedisRouteDefinitionRepository.java @@ -19,8 +19,7 @@ package com.wemirr.platform.gateway.route; -import com.alibaba.fastjson2.JSON; -import com.alibaba.fastjson2.JSONObject; +import com.wemirr.framework.commons.JacksonUtils; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.cloud.gateway.route.RouteDefinition; @@ -55,7 +54,7 @@ public class RedisRouteDefinitionRepository implements RouteDefinitionRepository return null; } log.debug("[动态路由信息] - [{}]", object); - return JSON.parseObject(object.toString(), RouteDefinition.class); + return JacksonUtils.toBean(object.toString(), RouteDefinition.class); } /** @@ -79,7 +78,7 @@ public class RedisRouteDefinitionRepository implements RouteDefinitionRepository @Override public Mono save(Mono route) { return route.flatMap(routeDefinition -> { - redisTemplate.opsForHash().put(KEY, routeDefinition.getId(), JSONObject.toJSONString(routeDefinition)); + redisTemplate.opsForHash().put(KEY, routeDefinition.getId(), JacksonUtils.toJson(routeDefinition)); return Mono.empty(); }); } diff --git a/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/utils/MonoHelper.java b/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/utils/MonoHelper.java index ec9368c4cc7e74bfdb1ce662be3749951395d2ed..829794c5b9e29fb2293830a65941931cb701d650 100644 --- a/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/utils/MonoHelper.java +++ b/wemirr-platform-gateway/src/main/java/com/wemirr/platform/gateway/utils/MonoHelper.java @@ -19,8 +19,7 @@ package com.wemirr.platform.gateway.utils; -import com.alibaba.fastjson2.JSON; -import com.alibaba.fastjson2.JSONObject; +import com.wemirr.framework.commons.JacksonUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; @@ -29,6 +28,9 @@ import org.springframework.http.server.reactive.ServerHttpResponse; import org.springframework.web.server.ServerWebExchange; import reactor.core.publisher.Mono; +import java.util.HashMap; +import java.util.Map; + /** * @author Levin */ @@ -39,13 +41,13 @@ public class MonoHelper { ServerHttpResponse response = exchange.getResponse(); response.setStatusCode(HttpStatus.SERVICE_UNAVAILABLE); response.getHeaders().set(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE); - JSONObject result = new JSONObject(); + Map result = new HashMap<>(); result.put("code", HttpStatus.SERVICE_UNAVAILABLE.value()); result.put("message", message); result.put("successful", false); result.put("timestamp", System.currentTimeMillis()); - log.warn("[错误信息] - [{}]", result.toJSONString()); - return response.writeWith(Mono.just(response.bufferFactory().wrap(JSON.toJSONBytes(result)))); + log.warn("[错误信息] - [{}]", JacksonUtils.toJson(result)); + return response.writeWith(Mono.just(response.bufferFactory().wrap(JacksonUtils.toJsonBytes(result)))); } } diff --git a/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/auth/listener/WpTokenListener.java b/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/auth/listener/WpTokenListener.java index b385ac27b7699bd12416d470e06cb94333f2430c..6eebe81d9775077ef7e8dc31147b36cefcbfc4ff 100644 --- a/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/auth/listener/WpTokenListener.java +++ b/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/auth/listener/WpTokenListener.java @@ -24,7 +24,8 @@ import cn.dev33.satoken.listener.SaTokenListener; import cn.dev33.satoken.stp.StpUtil; import cn.dev33.satoken.stp.parameter.SaLoginParameter; import cn.hutool.extra.servlet.JakartaServletUtil; -import com.alibaba.fastjson2.JSONObject; +import com.fasterxml.jackson.core.type.TypeReference; +import com.wemirr.framework.commons.JacksonUtils; import com.wemirr.framework.commons.NativeUserAgent; import com.wemirr.framework.commons.RegionUtils; import com.wemirr.framework.db.utils.TenantHelper; @@ -79,7 +80,8 @@ public class WpTokenListener implements SaTokenListener { .tenantId(info.getTenantId()).tenantCode(info.getTenantCode()).location(region).ip(ip) .platform(userAgent.platform()).engine(userAgent.engine()).browser(userAgent.browser()).os(userAgent.os()) .loginType(principalType).createBy(userId).createTime(Instant.now()).createName(info.getNickName()).build(); - info.setLoginLog(JSONObject.from(loginLog)); + info.setLoginLog(JacksonUtils.readValue(JacksonUtils.toJson(loginLog), new TypeReference<>() { + })); StpUtil.getTokenSessionByToken(tokenValue).set(extProperties.getServer().getTokenInfoKey(), info); // 记录登录日志 TenantHelper.executeWithTenantDb(info.getTenantCode(), () -> this.loginLogMapper.insert(loginLog)); diff --git a/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/auth/service/ThirdAuthTemplate.java b/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/auth/service/ThirdAuthTemplate.java index 312666b70d69caf67cec3be74d7a82566102ce54..ad8ad12722557f49416fe429ec10b7c4f568f991 100644 --- a/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/auth/service/ThirdAuthTemplate.java +++ b/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/auth/service/ThirdAuthTemplate.java @@ -54,7 +54,7 @@ public class ThirdAuthTemplate { private static final Map AUTH_SERVICE_MAP = Maps.newConcurrentMap(); - @PostConstruct +// @PostConstruct public void init() { Map configMap = thirdAuthProperties.getConfigMap(); if (CollUtil.isEmpty(configMap)) { diff --git a/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/auth/service/impl/RegisteredClientServiceImpl.java b/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/auth/service/impl/RegisteredClientServiceImpl.java index 5b604aa7707f2e56aa4dea5764f75fb07d50fdd1..8048fbc12d28b5d0d473b0352bf260eb99c4b3d6 100644 --- a/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/auth/service/impl/RegisteredClientServiceImpl.java +++ b/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/auth/service/impl/RegisteredClientServiceImpl.java @@ -20,8 +20,8 @@ package com.wemirr.platform.iam.auth.service.impl; import cn.hutool.core.collection.CollUtil; -import com.alibaba.fastjson2.JSON; import com.wemirr.framework.commons.BeanUtilPlus; +import com.wemirr.framework.commons.JacksonUtils; import com.wemirr.framework.commons.exception.CheckedException; import com.wemirr.framework.db.mybatisplus.ext.SuperServiceImpl; import com.wemirr.framework.db.mybatisplus.wrap.Wraps; @@ -49,10 +49,10 @@ public class RegisteredClientServiceImpl extends SuperServiceImpl CheckedException.badRequest("租户编码不能为空")); Assert.notBlank(principal.getUsername(), () -> CheckedException.badRequest("用户名不能为空")); Assert.notBlank(principal.getPassword(), () -> CheckedException.badRequest("密码不能为空")); diff --git a/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/auth/strategy/GiteeAuthenticatorStrategy.java b/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/auth/strategy/GiteeAuthenticatorStrategy.java index 7e42e6cab24703339a8384a4dc733dc67a0ff25c..b8ac99a14cf01c81d162407ed8d953bdb4dd6c3d 100644 --- a/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/auth/strategy/GiteeAuthenticatorStrategy.java +++ b/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/auth/strategy/GiteeAuthenticatorStrategy.java @@ -19,7 +19,7 @@ package com.wemirr.platform.iam.auth.strategy; -import com.alibaba.fastjson.JSON; +import com.wemirr.framework.commons.JacksonUtils; import com.wemirr.framework.commons.exception.CheckedException; import com.wemirr.framework.db.utils.TenantHelper; import com.wemirr.platform.iam.auth.domain.entity.UserThirdAccount; @@ -77,7 +77,7 @@ public class GiteeAuthenticatorStrategy implements AuthenticatorStrategy { ThirdAuthType type = ThirdAuthType.of(principal.getLoginType()); UserThirdAccount thirdAccount = Optional.ofNullable(thirdAccountMapper.selectOne(UserThirdAccount::getAccountId, username, UserThirdAccount::getType, type)) .orElseThrow(() -> CheckedException.notFound("用户未授权")); - log.debug("third-account => {}", JSON.toJSONString(thirdAccount)); + log.debug("third-account => {}", JacksonUtils.toJson(thirdAccount)); User user = Optional.ofNullable(TenantHelper.executeWithTenantDb(tenantCode, () -> userMapper.selectUserByTenantId("admin", tenant.getId()))) .orElseThrow(() -> CheckedException.notFound("账户不存在")); return UserTenantAuthentication.builder().user(user).tenant(tenant).build(); diff --git a/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/auth/support/AuthenticationPrincipal.java b/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/auth/support/AuthenticationPrincipal.java index 2e6329e0dbc7e208e4421d331555939f662bd98d..dc0eddfadf91f11ab767b700015054e22c4452b7 100644 --- a/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/auth/support/AuthenticationPrincipal.java +++ b/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/auth/support/AuthenticationPrincipal.java @@ -19,7 +19,6 @@ package com.wemirr.platform.iam.auth.support; -import com.alibaba.fastjson2.annotation.JSONField; import com.fasterxml.jackson.annotation.JsonIgnore; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.servlet.http.HttpServletRequest; @@ -62,7 +61,6 @@ public class AuthenticationPrincipal { private String clientSecret; @JsonIgnore - @JSONField(serialize = false, deserialize = false) @Schema(description = "HTTP 请求", requiredMode = Schema.RequiredMode.REQUIRED) private HttpServletRequest request; diff --git a/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/controller/WebSocketMessageEndpoint.java b/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/controller/WebSocketMessageEndpoint.java index b3d995dd04d6d0bcacd968d33251b341053cdf11..93779d0bff38ab2cfa2eddd38eeab702d09e144c 100644 --- a/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/controller/WebSocketMessageEndpoint.java +++ b/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/controller/WebSocketMessageEndpoint.java @@ -21,9 +21,9 @@ package com.wemirr.platform.iam.base.controller; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.extra.spring.SpringUtil; -import com.alibaba.fastjson2.JSON; import com.baomidou.dynamic.datasource.DynamicRoutingDataSource; import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder; +import com.wemirr.framework.commons.JacksonUtils; import com.wemirr.framework.db.mybatisplus.wrap.Wraps; import com.wemirr.framework.db.properties.DatabaseProperties; import com.wemirr.framework.db.properties.MultiTenantType; @@ -79,7 +79,7 @@ public class WebSocketMessageEndpoint extends BaseWebSocketEndpoint { if (CollectionUtil.isEmpty(messages)) { return; } - messages.forEach(message -> senderMessage(userId, JSON.toJSONString(message))); + messages.forEach(message -> senderMessage(userId, JacksonUtils.toJson(message))); } @OnMessage diff --git a/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/domain/dto/req/MessageChannelSaveReq.java b/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/domain/dto/req/MessageChannelSaveReq.java index d55813a297e2eecf243a653f59cfcab112d45df8..e5b9f2ee4e5824c4fd8da257d377f2e6ee601aa3 100644 --- a/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/domain/dto/req/MessageChannelSaveReq.java +++ b/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/domain/dto/req/MessageChannelSaveReq.java @@ -19,10 +19,11 @@ package com.wemirr.platform.iam.base.domain.dto.req; -import com.alibaba.fastjson2.JSONObject; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import java.util.Map; + /** * @author Levin */ @@ -42,7 +43,7 @@ public class MessageChannelSaveReq { private Boolean status; @Schema(description = "设置") - private JSONObject setting; + private Map setting; @Schema(description = "描述") private String description; diff --git a/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/domain/dto/req/MessageNotifyPublishReq.java b/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/domain/dto/req/MessageNotifyPublishReq.java index 08e43150d2952bd3da3dc2d6435cb028a8644b15..360f933ffffbbc7c22a11dac63c3f543f2b9915c 100644 --- a/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/domain/dto/req/MessageNotifyPublishReq.java +++ b/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/domain/dto/req/MessageNotifyPublishReq.java @@ -19,12 +19,12 @@ package com.wemirr.platform.iam.base.domain.dto.req; -import com.alibaba.fastjson2.JSONObject; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotEmpty; import lombok.Data; import java.util.List; +import java.util.Map; /** * @author Levin @@ -43,5 +43,5 @@ public class MessageNotifyPublishReq { private List subscriberIdList; @Schema(description = "变量") - private JSONObject variables; + private Map variables; } diff --git a/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/domain/dto/resp/MessageChannelDetailResp.java b/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/domain/dto/resp/MessageChannelDetailResp.java index 56efc56e910508b880c95c4db3611ca2b406bfe8..39e1077d4d46546e5f8d31dbacd606a23c36e6c5 100644 --- a/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/domain/dto/resp/MessageChannelDetailResp.java +++ b/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/domain/dto/resp/MessageChannelDetailResp.java @@ -19,10 +19,11 @@ package com.wemirr.platform.iam.base.domain.dto.resp; -import com.alibaba.fastjson2.JSONObject; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import java.util.Map; + /** * @author Levin */ @@ -42,7 +43,7 @@ public class MessageChannelDetailResp { private Boolean status; @Schema(description = "设置") - private JSONObject setting; + private Map setting; @Schema(description = "租户ID") private Long tenantId; diff --git a/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/domain/dto/resp/SiteSettingDetailResp.java b/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/domain/dto/resp/SiteSettingDetailResp.java index 951d931dafa7255846ca62478c25247f89b2bd8f..16538dbe8444d4e0d94fa3c614df390b4f4deede 100644 --- a/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/domain/dto/resp/SiteSettingDetailResp.java +++ b/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/domain/dto/resp/SiteSettingDetailResp.java @@ -19,10 +19,11 @@ package com.wemirr.platform.iam.base.domain.dto.resp; -import com.alibaba.fastjson2.JSONObject; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import java.util.Map; + /** * @author Levin */ @@ -43,6 +44,6 @@ public class SiteSettingDetailResp { private String logo; @Schema(description = "扩展属性") - private JSONObject ext; + private Map ext; } diff --git a/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/domain/entity/DiffLogEntity.java b/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/domain/entity/DiffLogEntity.java index 26b23a75dfce25ab26daf2ca93665c667e9c9ac5..9c4bc13d96a85779c05419966d3ef108cb0b235d 100644 --- a/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/domain/entity/DiffLogEntity.java +++ b/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/domain/entity/DiffLogEntity.java @@ -20,8 +20,7 @@ package com.wemirr.platform.iam.base.domain.entity; import com.baomidou.mybatisplus.annotation.*; -import com.wemirr.framework.db.mybatisplus.handler.type.JsonListTypeHandler; -import com.wemirr.framework.db.mybatisplus.handler.type.MapTypeHandler; +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; import com.wemirr.framework.log.diff.domain.DiffLogInfo; import com.wemirr.framework.log.diff.domain.FieldChange; import io.swagger.v3.oas.annotations.media.Schema; @@ -45,11 +44,11 @@ public class DiffLogEntity extends DiffLogInfo { @OrderBy private Long id; - @TableField(typeHandler = MapTypeHandler.class) + @TableField(typeHandler = JacksonTypeHandler.class) @Schema(description = "请求上下文信息(IP、浏览器、URI等)") protected Map extra; - @TableField(typeHandler = JsonListTypeHandler.class) + @TableField(typeHandler = JacksonTypeHandler.class) @Schema(description = "字段变更记录列表") protected List variables; diff --git a/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/service/impl/DictServiceImpl.java b/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/service/impl/DictServiceImpl.java index 587be3ea2d31cf71386f370e514800688957a493..d5db08177a99abfee35414c63c96556e19399f14 100644 --- a/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/service/impl/DictServiceImpl.java +++ b/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/service/impl/DictServiceImpl.java @@ -62,7 +62,7 @@ public class DictServiceImpl extends SuperServiceImpl im private final DictLoadService dictLoadService; private final I18nLocaleMessageMapper i18nLocaleMessageMapper; - @PostConstruct +// @PostConstruct public void init() { refresh(); } diff --git a/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/service/impl/I18nDataServiceImpl.java b/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/service/impl/I18nDataServiceImpl.java index 8ef8ded4e82126719a99fa40132460d477c6a933..95c718f4ad457e99efcf34beb5c6f8fc215a4cb3 100644 --- a/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/service/impl/I18nDataServiceImpl.java +++ b/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/service/impl/I18nDataServiceImpl.java @@ -21,9 +21,9 @@ package com.wemirr.platform.iam.base.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; -import com.alibaba.fastjson2.JSON; import com.baomidou.dynamic.datasource.annotation.DSTransactional; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.wemirr.framework.commons.JacksonUtils; import com.wemirr.framework.commons.security.AuthenticationContext; import com.wemirr.framework.db.mybatisplus.ext.SuperServiceImpl; import com.wemirr.framework.db.mybatisplus.wrap.Wraps; @@ -56,19 +56,19 @@ import static java.util.stream.Collectors.toList; @Service @RequiredArgsConstructor public class I18nDataServiceImpl extends SuperServiceImpl implements I18nDataService { - + private final I18nDataMapper i18nDataMapper; private final I18nLocaleMessageMapper i18nLocaleMessageMapper; private final I18nMessageProvider i18nMessageProvider; private final AuthenticationContext context; - + @PostConstruct public void init() { List messages = i18nDataMapper.loadI18nMessage(); - log.debug("从数据库加载国际化数据 - {}", JSON.toJSONString(messages)); + log.debug("从数据库加载国际化数据 - {}", JacksonUtils.toJson(messages)); i18nMessageProvider.loadI18nMessage(messages); } - + @Override public IPage pageList(I18nPageReq req) { final IPage page = this.baseMapper.selectPage(req.buildPage(), @@ -85,7 +85,7 @@ public class I18nDataServiceImpl extends SuperServiceImpl() { + })); } return bean; } diff --git a/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/service/impl/MessageNotifyServiceImpl.java b/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/service/impl/MessageNotifyServiceImpl.java index baefe975ce47db2a086a98bc81b8533f57a22c5c..b1e6fcfed490a3c9ebfba9376d89ac2bf4e90f77 100644 --- a/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/service/impl/MessageNotifyServiceImpl.java +++ b/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/service/impl/MessageNotifyServiceImpl.java @@ -22,8 +22,8 @@ package com.wemirr.platform.iam.base.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.extra.spring.SpringUtil; -import com.alibaba.fastjson2.JSONObject; import com.baomidou.dynamic.datasource.annotation.DSTransactional; +import com.wemirr.framework.commons.JacksonUtils; import com.wemirr.framework.commons.MvelHelper; import com.wemirr.framework.commons.exception.CheckedException; import com.wemirr.framework.commons.security.AuthenticationContext; @@ -42,9 +42,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.time.Instant; -import java.util.Collection; -import java.util.List; -import java.util.Optional; +import java.util.*; import java.util.stream.Collectors; /** @@ -65,7 +63,7 @@ public class MessageNotifyServiceImpl extends SuperServiceImpl CheckedException.notFound("消息模板不存在")); - JSONObject variables = Optional.ofNullable(req.getVariables()).orElse(new JSONObject()); + Map variables = Optional.ofNullable(req.getVariables()).orElse(new HashMap<>()); List userList = this.userMapper.selectByIds(req.getSubscriberIdList()); if (CollUtil.isEmpty(userList)) { log.warn("订阅信息不存在"); @@ -77,7 +75,7 @@ public class MessageNotifyServiceImpl extends SuperServiceImpl { List typeList = StrUtil.split(template.getType(), ","); return typeList.stream().map(type -> MessageNotify.builder().userId(user.getId()) - .templateId(template.getId()).variables(variables.toJSONString()) + .templateId(template.getId()).variables(JacksonUtils.toJson(variables)) .title(template.getSubject()).type(type) .content(content).nickname(user.getNickName()) .tenantId(context.tenantId()) diff --git a/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/service/impl/OptLogServiceImpl.java b/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/service/impl/OptLogServiceImpl.java index 69a4ae90ad37f08b48605270fcf8568fae306c3a..642f8cd78e0a7f01b2fc883e9bff38385563db0d 100644 --- a/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/service/impl/OptLogServiceImpl.java +++ b/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/service/impl/OptLogServiceImpl.java @@ -20,8 +20,8 @@ package com.wemirr.platform.iam.base.service.impl; import cn.hutool.core.bean.BeanUtil; -import com.alibaba.fastjson2.JSON; import com.wemirr.framework.boot.log.AccessLogInfo; +import com.wemirr.framework.commons.JacksonUtils; import com.wemirr.framework.db.mybatisplus.ext.SuperServiceImpl; import com.wemirr.framework.db.utils.TenantHelper; import com.wemirr.platform.iam.base.domain.entity.OptLog; @@ -44,7 +44,7 @@ public class OptLogServiceImpl extends SuperServiceImpl im @Override public void listener(AccessLogInfo info) { TenantHelper.executeWithTenantDb(info.getTenantCode(), () -> { - log.debug("[日志信息] - {}", JSON.toJSONString(info)); + log.debug("[日志信息] - {}", JacksonUtils.toJson(info)); return this.optLogMapper.insert(BeanUtil.toBean(info, OptLog.class)); }); } diff --git a/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/service/strategy/DefaultMessageNotifyStrategy.java b/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/service/strategy/DefaultMessageNotifyStrategy.java index 78d46ec37d8bca6a7c4045b0b8407446181bb81d..30c426cb236668917efa914ad736c3abcb64ff61 100644 --- a/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/service/strategy/DefaultMessageNotifyStrategy.java +++ b/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/service/strategy/DefaultMessageNotifyStrategy.java @@ -19,7 +19,7 @@ package com.wemirr.platform.iam.base.service.strategy; -import com.alibaba.fastjson2.JSON; +import com.wemirr.framework.commons.JacksonUtils; import com.wemirr.framework.websocket.WebSocketManager; import com.wemirr.platform.iam.base.domain.entity.MessageChannel; import com.wemirr.platform.iam.base.domain.entity.MessageNotify; @@ -44,7 +44,7 @@ public class DefaultMessageNotifyStrategy implements MessageNotifyStrategy { @Override public void handler(MessageChannel channel, MessageNotify notify) { - this.webSocketManager.sendMessage(String.valueOf(notify.getUserId()), JSON.toJSONString(notify)); - log.debug("系统消息发送配置 => {},通知消息 => {}", "", JSON.toJSONString(notify)); + this.webSocketManager.sendMessage(String.valueOf(notify.getUserId()), JacksonUtils.toJson(notify)); + log.debug("系统消息发送配置 => {},通知消息 => {}", "", JacksonUtils.toJson(notify)); } } diff --git a/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/service/strategy/EmailMessageNotifyStrategy.java b/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/service/strategy/EmailMessageNotifyStrategy.java index ea5ec4ed4b055958c022defea31a6e924ac46268..59afd444283149bf42ffc393cd09c43f47bebaec 100644 --- a/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/service/strategy/EmailMessageNotifyStrategy.java +++ b/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/service/strategy/EmailMessageNotifyStrategy.java @@ -20,7 +20,7 @@ package com.wemirr.platform.iam.base.service.strategy; import cn.hutool.core.map.MapUtil; -import com.alibaba.fastjson2.JSON; +import com.wemirr.framework.commons.JacksonUtils; import com.wemirr.platform.iam.base.domain.entity.MessageChannel; import com.wemirr.platform.iam.base.domain.entity.MessageNotify; import lombok.Builder; @@ -51,7 +51,7 @@ public class EmailMessageNotifyStrategy implements MessageNotifyStrategy { public JavaMailSenderImpl getMailSender(MessageChannel channel) { // 要判断配置是否又被覆盖过,如果配置覆盖过应该刷新配置 - ChannelSetting setting = JSON.parseObject(channel.getSetting(), ChannelSetting.class); + ChannelSetting setting = JacksonUtils.toBean(channel.getSetting(), ChannelSetting.class); MailSendFactory factory = SENDER_QUEUE.get(channel.getId()); if (factory != null && factory.getSetting() == setting) { log.debug("检测到配置未发生变更,当前采用已创建的对象进行短信发送"); @@ -79,7 +79,7 @@ public class EmailMessageNotifyStrategy implements MessageNotifyStrategy { public void handler(MessageChannel channel, MessageNotify notify) { JavaMailSenderImpl mailSender = getMailSender(channel); String setting = channel.getSetting(); - log.debug("邮箱消息发送配置 => {},通知消息 => {}", setting, JSON.toJSONString(notify)); + log.debug("邮箱消息发送配置 => {},通知消息 => {}", setting, JacksonUtils.toJson(notify)); SimpleMailMessage message = new SimpleMailMessage(); message.setFrom(mailSender.getUsername()); message.setTo(notify.getSubscribe()); diff --git a/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/service/strategy/MessageNotifyEventListener.java b/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/service/strategy/MessageNotifyEventListener.java index e32a02926b59dfbba893916bf402947b77f047b4..5b68d4ccc3c43d535821dfc2e950b9978820db78 100644 --- a/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/service/strategy/MessageNotifyEventListener.java +++ b/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/base/service/strategy/MessageNotifyEventListener.java @@ -52,7 +52,7 @@ public class MessageNotifyEventListener { private final ThreadPoolExecutor poolExecutor; private final MessageChannelMapper messageChannelMapper; - @PostConstruct +// @PostConstruct public void init() { Map beansOfType = SpringUtil.getBeansOfType(MessageNotifyStrategy.class); for (Map.Entry entry : beansOfType.entrySet()) { diff --git a/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/system/domain/converts/RegisteredClientConverts.java b/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/system/domain/converts/RegisteredClientConverts.java index 689fb3c66e84de4d05ef8fce314530f7aed916a4..ee8f72450703a1230cf2691904951adbf372eb65 100644 --- a/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/system/domain/converts/RegisteredClientConverts.java +++ b/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/system/domain/converts/RegisteredClientConverts.java @@ -20,8 +20,8 @@ package com.wemirr.platform.iam.system.domain.converts; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson2.JSON; -import com.alibaba.fastjson2.JSONObject; +import com.fasterxml.jackson.databind.JsonNode; +import com.wemirr.framework.commons.JacksonUtils; import com.wemirr.framework.db.mybatisplus.page.BasePageConverts; import com.wemirr.platform.iam.auth.domain.entity.RegisteredClient; import com.wemirr.platform.iam.system.domain.dto.resp.RegisteredClientResp; @@ -31,11 +31,11 @@ import lombok.SneakyThrows; * @author Levin */ public class RegisteredClientConverts { - + public static final RegisteredClientConverts.RegisteredClientRef2RespConverts REGISTERED_CLIENT_REF_2_RESP_CONVERTS = new RegisteredClientConverts.RegisteredClientRef2RespConverts(); - + public static class RegisteredClientRef2RespConverts implements BasePageConverts { - + @SneakyThrows @Override public RegisteredClientResp convert(RegisteredClient source) { @@ -57,12 +57,12 @@ public class RegisteredClientConverts { target.setStatus(source.getStatus()); final String tokenSettings = source.getTokenSettings(); if (StrUtil.isNotBlank(tokenSettings)) { - JSONObject settings = JSON.parseObject(tokenSettings); - target.setAccessTokenTimeToLive(settings.getLong("accessTokenTimeToLive")); - target.setRefreshTokenTimeToLive(settings.getLong("refreshTokenTimeToLive")); + JsonNode settings = JacksonUtils.toObj(tokenSettings); + target.setAccessTokenTimeToLive(settings.get("accessTokenTimeToLive").asLong()); + target.setRefreshTokenTimeToLive(settings.get("refreshTokenTimeToLive").asLong()); } return target; } } - + } diff --git a/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/system/domain/entity/Resource.java b/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/system/domain/entity/Resource.java index ff8f8f7f70e2f2805aa8d07359f4f5455630a9a7..2c0d156ad4885996d3c97b2301f5b0c671991dac 100644 --- a/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/system/domain/entity/Resource.java +++ b/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/system/domain/entity/Resource.java @@ -21,8 +21,8 @@ package com.wemirr.platform.iam.system.domain.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; import com.wemirr.framework.commons.entity.SuperEntity; -import com.wemirr.framework.db.mybatisplus.handler.type.MapTypeHandler; import com.wemirr.platform.iam.system.domain.enums.ResourceType; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; @@ -90,7 +90,7 @@ public class Resource extends SuperEntity { private String description; @Schema(description = "路由元信息(JSON)") - @TableField(typeHandler = MapTypeHandler.class) + @TableField(typeHandler = JacksonTypeHandler.class) private Map meta; } diff --git a/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/system/service/impl/DbInstanceServiceImpl.java b/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/system/service/impl/DbInstanceServiceImpl.java index 4ec6a7c5f8ef31f2185e53bd6c21840f780e1c6c..2c28f16a8d1900b6002c7cc88402ab7d482750ec 100644 --- a/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/system/service/impl/DbInstanceServiceImpl.java +++ b/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/system/service/impl/DbInstanceServiceImpl.java @@ -22,7 +22,6 @@ package com.wemirr.platform.iam.system.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.extra.spring.SpringUtil; -import com.alibaba.fastjson2.JSON; import com.baomidou.dynamic.datasource.annotation.DSTransactional; import com.wemirr.framework.commons.BeanUtilPlus; import com.wemirr.framework.commons.exception.CheckedException; @@ -67,7 +66,7 @@ public class DbInstanceServiceImpl extends SuperServiceImpl implemen continue; } String key = String.format(extProperties.getServer().getTokenInfoKey(), token); - UserInfoDetails info = ((JSONObject) StpUtil.getTokenSessionByToken(token).get(key)).to(UserInfoDetails.class); + UserInfoDetails info = (UserInfoDetails) StpUtil.getTokenSessionByToken(token).get(key); if (info == null || info.getLoginLog() == null) { continue; } - LoginLog loginLog = JSONObject.from(info.getLoginLog()).toJavaObject(LoginLog.class); + LoginLog loginLog = JacksonUtils.readValue(JacksonUtils.toJson(info.getLoginLog()), new TypeReference<>() { + }); if (StrUtil.isNotBlank(req.getClientId()) && !StrUtil.equals(req.getClientId(), loginLog.getClientId())) { continue; } @@ -277,7 +280,7 @@ public class UserServiceImpl extends SuperServiceImpl implemen if (ObjUtil.isNotNull(req.getTenantId()) && !NumberUtil.equals(req.getTenantId(), loginLog.getTenantId())) { continue; } - JSONObject item = JSONObject.from(info.getLoginLog()); + Map item = info.getLoginLog(); item.put("token", token); list.add(item); } diff --git a/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/tenant/service/impl/TenantDictServiceImpl.java b/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/tenant/service/impl/TenantDictServiceImpl.java index 6e0fb15b2dcf0bd990f5311be8b86f90b05a61ab..0a909e81bfe0f319e6adf2b89ab1682a48c774af 100644 --- a/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/tenant/service/impl/TenantDictServiceImpl.java +++ b/wemirr-platform-iam/src/main/java/com/wemirr/platform/iam/tenant/service/impl/TenantDictServiceImpl.java @@ -66,7 +66,7 @@ public class TenantDictServiceImpl extends SuperServiceImpl im variables.put("tenant_id", tenant.getId()); variables.put("tenant_name", tenant.getName()); final DbInstancePageResp dbInstance = this.dbInstanceMapper.getTenantDynamicDatasourceByTenantId(tenant.getId()); - log.debug("dbInstance => {}", JSON.toJSONString(dbInstance)); + log.debug("dbInstance => {}", JacksonUtils.toJson(dbInstance)); final DynamicDataSourceEvent event = BeanUtil.toBean(dbInstance, DynamicDataSourceEvent.class); dynamicDataSourceHandler.initSqlScript(event, variables); final Role role = selectTenantAdminRole(); diff --git a/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/file/event/OssConfigTemplate.java b/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/file/event/OssConfigTemplate.java index 3484cb764184da118b2ff97a89d889700bb5dc1a..a329f7f55080e384ee5a22324066d23b0826afed 100644 --- a/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/file/event/OssConfigTemplate.java +++ b/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/file/event/OssConfigTemplate.java @@ -22,8 +22,7 @@ package com.wemirr.platform.suite.file.event; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.extra.spring.SpringUtil; -import com.alibaba.fastjson2.JSON; -import com.alibaba.fastjson2.JSONObject; +import com.wemirr.framework.commons.JacksonUtils; import com.wemirr.framework.commons.security.AuthenticationContext; import com.wemirr.framework.db.mybatisplus.wrap.Wraps; import com.wemirr.framework.db.utils.TenantHelper; @@ -85,7 +84,7 @@ public class OssConfigTemplate implements ApplicationRunner { s3Config.setDomain(setting.getDomain()); s3Config.setBasePath(setting.getBasePath()); amazonS3ConfigList.add(s3Config); - redisTemplate.opsForHash().put(STORAGE_SETTING_DEFAULT_SETTING, setting.getTenantId().toString(), JSON.toJSONString(setting)); + redisTemplate.opsForHash().put(STORAGE_SETTING_DEFAULT_SETTING, setting.getTenantId().toString(), JacksonUtils.toJson(setting)); } fileStorageList.addAll(FileStorageServiceBuilder.buildAmazonS3FileStorage(amazonS3ConfigList, null)); log.info("==================== 存储设置初始化-End ===================="); @@ -109,7 +108,7 @@ public class OssConfigTemplate implements ApplicationRunner { event.setDomain(setting.getDomain()); event.setEndPoint(setting.getEndPoint()); if (setting.getStatus()) { - redisTemplate.opsForHash().put(StorageConstants.STORAGE_SETTING_DEFAULT_SETTING, tenantId.toString(), JSONObject.toJSONString(setting)); + redisTemplate.opsForHash().put(StorageConstants.STORAGE_SETTING_DEFAULT_SETTING, tenantId.toString(), JacksonUtils.toJson(setting)); } redisTemplate.convertAndSend(StorageConstants.STORAGE_CONFIG_EVENT_TOPIC, event); SpringUtil.publishEvent(event); @@ -120,9 +119,9 @@ public class OssConfigTemplate implements ApplicationRunner { if (StrUtil.isBlank(json)) { OssConfig setting = this.ossConfigMapper.selectOne(Wraps.lbQ().eq(OssConfig::getStatus, true) .eq(OssConfig::getTenantId, context.tenantId())); - redisTemplate.opsForHash().put(StorageConstants.STORAGE_SETTING_DEFAULT_SETTING, context.tenantId().toString(), JSONObject.toJSONString(setting)); + redisTemplate.opsForHash().put(StorageConstants.STORAGE_SETTING_DEFAULT_SETTING, context.tenantId().toString(), JacksonUtils.toJson(setting)); return setting; } - return JSON.parseObject(json, OssConfig.class); + return JacksonUtils.toBean(json, OssConfig.class); } } diff --git a/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/file/service/impl/OssFileServiceImpl.java b/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/file/service/impl/OssFileServiceImpl.java index 95732d0ee92ada26bfa289e8034ded2ba434c456..d487b635dafca63cfd5d9e2bab83d4a28fa4c88d 100644 --- a/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/file/service/impl/OssFileServiceImpl.java +++ b/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/file/service/impl/OssFileServiceImpl.java @@ -22,9 +22,9 @@ package com.wemirr.platform.suite.file.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.lang.Dict; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson2.JSON; -import com.alibaba.fastjson2.TypeReference; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.fasterxml.jackson.core.type.TypeReference; +import com.wemirr.framework.commons.JacksonUtils; import com.wemirr.framework.commons.exception.CheckedException; import com.wemirr.framework.db.mybatisplus.ext.SuperServiceImpl; import com.wemirr.framework.db.mybatisplus.wrap.Wraps; @@ -138,12 +138,12 @@ public class OssFileServiceImpl extends SuperServiceImpl if (StrUtil.isBlank(detail.getThFilename())) { detail.setThFilename(null); } - detail.setMetadata(JSON.toJSONString(info.getMetadata())); - detail.setUserMetadata(JSON.toJSONString(info.getUserMetadata())); - detail.setThMetadata(JSON.toJSONString(info.getThMetadata())); - detail.setThUserMetadata(JSON.toJSONString(info.getThUserMetadata())); - detail.setAttr(JSON.toJSONString(info.getAttr())); - detail.setHashInfo(JSON.toJSONString(info.getHashInfo())); + detail.setMetadata(JacksonUtils.toJson(info.getMetadata())); + detail.setUserMetadata(JacksonUtils.toJson(info.getUserMetadata())); + detail.setThMetadata(JacksonUtils.toJson(info.getThMetadata())); + detail.setThUserMetadata(JacksonUtils.toJson(info.getThUserMetadata())); + detail.setAttr(JacksonUtils.toJson(info.getAttr())); + detail.setHashInfo(JacksonUtils.toJson(info.getHashInfo())); return detail; } @@ -161,9 +161,9 @@ public class OssFileServiceImpl extends SuperServiceImpl info.setThMetadata(jsonToMetadata(detail.getThMetadata())); info.setThUserMetadata(jsonToMetadata(detail.getThUserMetadata())); // 这里手动获取数据库中的 json 字符串 并转成 附加属性字典,方便使用 - info.setAttr(JSON.parseObject(detail.getAttr(), Dict.class)); + info.setAttr(JacksonUtils.toBean(detail.getAttr(), Dict.class)); // 这里手动获取数据库中的 json 字符串 并转成 哈希信息,方便使用 - info.setHashInfo(JSON.parseObject(detail.getHashInfo(), HashInfo.class)); + info.setHashInfo(JacksonUtils.toBean(detail.getHashInfo(), HashInfo.class)); return info; } @@ -174,7 +174,7 @@ public class OssFileServiceImpl extends SuperServiceImpl if (StrUtil.isBlank(json)) { return null; } - return JSON.parseObject(json.replaceAll("^\"|\"$", ""), new TypeReference<>() { + return JacksonUtils.readValue(json.replaceAll("^\"|\"$", ""), new TypeReference<>() { }); } diff --git a/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/online/controller/OnlineFormDataController.java b/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/online/controller/OnlineFormDataController.java index 62b009ebfb4ce38e915a2d3afee9c4434b47fac8..8566f016ff249596fa51f2beae881ab2e2ab7e92 100644 --- a/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/online/controller/OnlineFormDataController.java +++ b/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/online/controller/OnlineFormDataController.java @@ -19,7 +19,6 @@ package com.wemirr.platform.suite.online.controller; -import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; import com.wemirr.platform.suite.online.domain.req.OnlineFormDataSaveReq; import com.wemirr.platform.suite.online.domain.req.OnlineFormDesignerPageReq; @@ -31,6 +30,8 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.util.Map; + /** * @author Levin */ @@ -46,7 +47,7 @@ public class OnlineFormDataController { @Operation(summary = "分页查询", description = "分页查询") @PostMapping("/page") - public IPage pageList(@RequestBody OnlineFormDesignerPageReq req) { + public IPage> pageList(@RequestBody OnlineFormDesignerPageReq req) { return onlineFormDataService.pageList(req); } diff --git a/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/online/controller/OnlineModelController.java b/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/online/controller/OnlineModelController.java index 2d935f2f71c8dcae90c88fff69bfa6012c32e4e9..de2f8969f1154189d4c4cb71e6be932de6537ff9 100644 --- a/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/online/controller/OnlineModelController.java +++ b/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/online/controller/OnlineModelController.java @@ -19,7 +19,6 @@ package com.wemirr.platform.suite.online.controller; -import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; import com.wemirr.framework.db.mybatisplus.wrap.Wraps; import com.wemirr.platform.suite.online.dialect.FastCrudDialect; @@ -37,6 +36,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.util.HashMap; +import java.util.Map; + /** * @author Levin */ @@ -82,18 +84,18 @@ public class OnlineModelController { @GetMapping("/fast-crud") @Operation(summary = "fast-crud模板 - [Levin] - [DONE]") - public JSONObject fastCrud(@RequestParam String definitionKey) { + public Map fastCrud(@RequestParam String definitionKey) { OnlineModel model = this.onlineModelService.getOne(Wraps.lbQ().eq(OnlineModel::getDefinitionKey, definitionKey)); if (model == null) { - return new JSONObject() { + return new HashMap<>() { { put("columns", null); } }; } - JSONObject fastCrud = FastCrudDialect.toFastCrud(model.getFormSchemas()); - return new JSONObject() { + Map fastCrud = FastCrudDialect.toFastCrud(model.getFormSchemas()); + return new HashMap<>() { { put("columns", fastCrud); diff --git a/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/online/dialect/FastCrudDialect.java b/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/online/dialect/FastCrudDialect.java index 12e5cfd8c761866c8719814b1d315b4e31527d60..30cebd1631a796444c523b227c8770bb59377d23 100644 --- a/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/online/dialect/FastCrudDialect.java +++ b/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/online/dialect/FastCrudDialect.java @@ -21,13 +21,15 @@ package com.wemirr.platform.suite.online.dialect; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson2.JSONArray; -import com.alibaba.fastjson2.JSONObject; -import com.alibaba.fastjson2.JSONPath; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.wemirr.framework.commons.JacksonUtils; import lombok.Data; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * 暂未优化,没考虑好如何优雅设计 @@ -36,28 +38,49 @@ import java.util.List; */ @Data public class FastCrudDialect { - - public static JSONObject toFastCrud(String text) { - // 将JSON字符串解析为对象 - JSONArray schemas = (JSONArray) JSONPath.eval(text, "$..[?(@.field)]"); - return toFastCrud(schemas.toJavaList(EpicDesignerField.class)); + + public static Map toFastCrud(String text) { + ObjectMapper mapper = new ObjectMapper(); + JsonNode root = JacksonUtils.readTree(text); + + // 手动遍历查找包含 field 属性的节点 + List fields = new ArrayList<>(); + findFieldNodes(root, fields, mapper); + + return toFastCrud(fields); + } + + private static void findFieldNodes(JsonNode node, List fields, ObjectMapper mapper) { + if (node.isObject() && node.has("field")) { + EpicDesignerField field = mapper.convertValue(node, EpicDesignerField.class); + fields.add(field); + } + + // 递归遍历所有子节点 + if (node.isObject()) { + node.properties().forEach(entry -> + findFieldNodes(entry.getValue(), fields, mapper) + ); + } else if (node.isArray()) { + node.forEach(child -> findFieldNodes(child, fields, mapper)); + } } - - public static JSONObject toFastCrudField(EpicDesignerField field) { + + public static Map toFastCrudField(EpicDesignerField field) { if (field == null) { throw new RuntimeException("Field 不能为空"); } - JSONObject item = new JSONObject() { - + Map item = new HashMap<>() { + { - put("search", new JSONObject() { - + put("search", new HashMap() { + { put("show", true); } }); - put("column", new JSONObject() { - + put("column", new HashMap() { + { put("show", true); put("width", 200); @@ -72,10 +95,10 @@ public class FastCrudDialect { return item; } List options = props.getOptions(); - item.put("dict", String.format("dict({data:%s})", JSON.toJSONString(options))); + item.put("dict", String.format("dict({data:%s})", JacksonUtils.toJson(options))); return item; } - + private static String getType(EpicDesignerField field) { if (StrUtil.equalsIgnoreCase(field.getType(), "input")) { return "text"; @@ -88,12 +111,12 @@ public class FastCrudDialect { } return field.getType(); } - - public static JSONObject toFastCrud(List fieldList) { + + public static Map toFastCrud(List fieldList) { if (CollUtil.isEmpty(fieldList)) { return null; } - JSONObject out = new JSONObject(); + Map out = new HashMap<>(); for (EpicDesignerField field : fieldList) { out.put(field.getField(), toFastCrudField(field)); } diff --git a/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/online/domain/entity/OnlineFormData.java b/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/online/domain/entity/OnlineFormData.java index 93fed90f82d919784ea9fdcc61ee7c742e199a28..7bbb8c021bfd09ab638cdf1fb05211fb2bcee577 100644 --- a/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/online/domain/entity/OnlineFormData.java +++ b/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/online/domain/entity/OnlineFormData.java @@ -19,10 +19,9 @@ package com.wemirr.platform.suite.online.domain.entity; -import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.handlers.Fastjson2TypeHandler; +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; import com.wemirr.framework.commons.entity.SuperEntity; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; @@ -31,6 +30,8 @@ import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import lombok.experimental.SuperBuilder; +import java.util.Map; + /** * @author Levin */ @@ -45,9 +46,9 @@ public class OnlineFormData extends SuperEntity { @Schema(defaultValue = "定义KEY") private String definitionKey; - @TableField(typeHandler = Fastjson2TypeHandler.class) + @TableField(typeHandler = JacksonTypeHandler.class) @Schema(defaultValue = "表单数据") - private JSONObject formData; + private Map formData; @Schema(defaultValue = "租户ID") private Long tenantId; diff --git a/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/online/domain/req/OnlineFormDataSaveReq.java b/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/online/domain/req/OnlineFormDataSaveReq.java index b3095397ac86d60fc740934fa13304d4e9536cb4..615251e001d2eea383295a16a64a8785e4b578ae 100644 --- a/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/online/domain/req/OnlineFormDataSaveReq.java +++ b/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/online/domain/req/OnlineFormDataSaveReq.java @@ -19,12 +19,13 @@ package com.wemirr.platform.suite.online.domain.req; -import com.alibaba.fastjson2.JSONObject; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.Data; +import java.util.Map; + /** * @author Levin */ @@ -37,6 +38,6 @@ public class OnlineFormDataSaveReq { @NotNull(message = "表单数据不能为空") @Schema(defaultValue = "表单数据") - private JSONObject formData; + private Map formData; } diff --git a/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/online/domain/req/OnlineFormDesignSaveReq.java b/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/online/domain/req/OnlineFormDesignSaveReq.java index d5da91f6378e5a29e491e39c7f82ffa68ee02c39..b72812a07519125d15b789d7b1804e18c6f4827b 100644 --- a/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/online/domain/req/OnlineFormDesignSaveReq.java +++ b/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/online/domain/req/OnlineFormDesignSaveReq.java @@ -19,11 +19,12 @@ package com.wemirr.platform.suite.online.domain.req; -import com.alibaba.fastjson2.JSONArray; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotEmpty; import lombok.Data; +import java.util.List; + /** * @author Levin */ @@ -35,5 +36,5 @@ public class OnlineFormDesignSaveReq { private String script; @NotEmpty(message = "表单字段不能为空") - private JSONArray schemas; + private List schemas; } diff --git a/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/online/domain/resp/OnlineFormDesignerDetailResp.java b/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/online/domain/resp/OnlineFormDesignerDetailResp.java index 3cf22bb0ec3b98e17dbda4c8da1de5623e750ce6..e742661d2437e001afb692aeb529d6bb71b84860 100644 --- a/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/online/domain/resp/OnlineFormDesignerDetailResp.java +++ b/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/online/domain/resp/OnlineFormDesignerDetailResp.java @@ -19,11 +19,12 @@ package com.wemirr.platform.suite.online.domain.resp; -import com.alibaba.fastjson2.JSONArray; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; +import java.util.List; + /** * @author Levin */ @@ -36,7 +37,7 @@ public class OnlineFormDesignerDetailResp extends OnlineFormDesignerPageResp { private String formScript; @Schema(description = "表单配置") - private JSONArray formSchemas; + private List formSchemas; @Schema(description = "表单crud配置") private String formCrudConfig; diff --git a/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/online/service/OnlineFormDataService.java b/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/online/service/OnlineFormDataService.java index 749334f15143ddfe578c77e5aeabc604d04cb078..03cf0da2da18802fa429f93b8e201ce96f7000b5 100644 --- a/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/online/service/OnlineFormDataService.java +++ b/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/online/service/OnlineFormDataService.java @@ -19,13 +19,14 @@ package com.wemirr.platform.suite.online.service; -import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; import com.wemirr.framework.db.mybatisplus.ext.SuperService; import com.wemirr.platform.suite.online.domain.entity.OnlineFormData; import com.wemirr.platform.suite.online.domain.req.OnlineFormDataSaveReq; import com.wemirr.platform.suite.online.domain.req.OnlineFormDesignerPageReq; +import java.util.Map; + /** * @author levin */ @@ -37,7 +38,7 @@ public interface OnlineFormDataService extends SuperService { * @param req req * @return 查询结果 */ - IPage pageList(OnlineFormDesignerPageReq req); + IPage> pageList(OnlineFormDesignerPageReq req); /** * 新增数据 diff --git a/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/online/service/impl/OnlineFormDataServiceImpl.java b/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/online/service/impl/OnlineFormDataServiceImpl.java index fd78228147531a90f2643c06199a65b018a243d5..ddb4f8bbb454d00f6bc90b35dc8e3a27883f1eaa 100644 --- a/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/online/service/impl/OnlineFormDataServiceImpl.java +++ b/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/online/service/impl/OnlineFormDataServiceImpl.java @@ -19,7 +19,6 @@ package com.wemirr.platform.suite.online.service.impl; -import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; import com.wemirr.framework.commons.BeanUtilPlus; import com.wemirr.framework.db.mybatisplus.ext.SuperServiceImpl; @@ -32,6 +31,9 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import java.util.HashMap; +import java.util.Map; + /** * @author Levin */ @@ -41,8 +43,8 @@ import org.springframework.stereotype.Service; public class OnlineFormDataServiceImpl extends SuperServiceImpl implements OnlineFormDataService { @Override - public IPage pageList(OnlineFormDesignerPageReq req) { - return this.baseMapper.pageList(req.buildPage(), req).convert(x -> new JSONObject() { + public IPage> pageList(OnlineFormDesignerPageReq req) { + return this.baseMapper.pageList(req.buildPage(), req).convert(x -> new HashMap<>() { { put("id", x.getId()); diff --git a/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/online/service/impl/OnlineModelServiceImpl.java b/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/online/service/impl/OnlineModelServiceImpl.java index 92214805742961fb94227278cd0371156757d195..dec549629ea2b7c35a8b1ca2126e5e244ab527da 100644 --- a/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/online/service/impl/OnlineModelServiceImpl.java +++ b/wemirr-platform-suite/src/main/java/com/wemirr/platform/suite/online/service/impl/OnlineModelServiceImpl.java @@ -20,10 +20,10 @@ package com.wemirr.platform.suite.online.service.impl; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson2.JSONArray; -import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.fasterxml.jackson.core.type.TypeReference; import com.wemirr.framework.commons.BeanUtilPlus; +import com.wemirr.framework.commons.JacksonUtils; import com.wemirr.framework.commons.exception.CheckedException; import com.wemirr.framework.db.mybatisplus.ext.SuperServiceImpl; import com.wemirr.framework.db.mybatisplus.wrap.Wraps; @@ -41,6 +41,8 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import java.util.List; +import java.util.Map; import java.util.Optional; /** @@ -50,63 +52,66 @@ import java.util.Optional; @Service @RequiredArgsConstructor public class OnlineModelServiceImpl extends SuperServiceImpl implements OnlineModelService { - + @Override public IPage pageList(OnlineFormDesignerPageReq req) { return this.baseMapper.selectPage(req.buildPage(), Wraps.lbQ() - .eq(OnlineModel::getDefinitionKey, req.getDefinitionKey()) - .eq(OnlineModel::getTitle, req.getTitle())) + .eq(OnlineModel::getDefinitionKey, req.getDefinitionKey()) + .eq(OnlineModel::getTitle, req.getTitle())) .convert(x -> BeanUtilPlus.toBean(x, OnlineFormDesignerPageResp.class)); } - + @Override public void create(OnlineFormDesignerSaveReq req) { var bean = BeanUtilPlus.toBean(req, OnlineModel.class); this.baseMapper.insert(bean); - + } - + @Override public void modify(Long id, OnlineFormDesignerSaveReq req) { var bean = BeanUtilPlus.toBean(id, req, OnlineModel.class); this.baseMapper.updateById(bean); } - + @Override public OnlineFormDesignerDetailResp detail(Long id) { var entity = this.baseMapper.selectById(id); var bean = BeanUtilPlus.toBean(entity, OnlineFormDesignerDetailResp.class); if (StrUtil.isNotBlank(entity.getFormSchemas())) { - bean.setFormSchemas(JSONArray.parseArray(entity.getFormSchemas())); + bean.setFormSchemas(JacksonUtils.readValue(entity.getFormSchemas(), new TypeReference<>() { + })); } return bean; } - + @Override public OnlineFormDesignerDetailResp detail(String definitionKey) { var entity = Optional.ofNullable(this.baseMapper.selectOne(OnlineModel::getDefinitionKey, definitionKey)) .orElseThrow(() -> CheckedException.notFound("模型不存在")); var bean = BeanUtilPlus.toBean(entity, OnlineFormDesignerDetailResp.class); if (StrUtil.isNotBlank(entity.getFormSchemas())) { - bean.setFormSchemas(JSONArray.parseArray(entity.getFormSchemas())); + bean.setFormSchemas(JacksonUtils.readValue(entity.getFormSchemas(), new TypeReference<>() { + })); } return bean; } - + @Override public void formDesign(Long id, OnlineFormDesignSaveReq req) { OnlineModel model = Optional.ofNullable(this.baseMapper.selectById(id)).orElseThrow(() -> CheckedException.notFound("模型不存在")); if (model.getStatus() != null && !model.getStatus()) { throw CheckedException.badRequest("模型已禁用"); } - JSONObject fastCrud = FastCrudDialect.toFastCrud(req.getSchemas().toJavaList(EpicDesignerField.class)); + Map fastCrud = FastCrudDialect.toFastCrud(JacksonUtils.readValue(JacksonUtils.toJson(req.getSchemas()), new TypeReference>() { + })); if (fastCrud == null) { throw CheckedException.notFound("未解析出 CRUD 模板"); } this.baseMapper.updateById(OnlineModel.builder().id(id) .formScript(req.getScript()) - .formSchemas(req.getSchemas().toJSONString()) - .formCrudConfig(fastCrud.toJSONString()) + .formSchemas(JacksonUtils.toJson(req.getSchemas())) + .formCrudConfig(JacksonUtils.toJson(fastCrud)) .build()); } } diff --git a/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/domain/dto/rep/KnowledgeItemResp.java b/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/domain/dto/rep/KnowledgeItemResp.java index efc3a4d5a197dfe3fcc7c090b9ce5439f9fc28a3..2f7e9c148c71234c8d30f3a08ed3601316b95f8c 100644 --- a/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/domain/dto/rep/KnowledgeItemResp.java +++ b/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/domain/dto/rep/KnowledgeItemResp.java @@ -1,7 +1,7 @@ package com.wemirr.platform.ai.domain.dto.rep; import com.baomidou.mybatisplus.annotation.TableField; -import com.wemirr.framework.db.mybatisplus.handler.type.MapTypeHandler; +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; import com.wemirr.platform.ai.core.enums.KnowledgeItemStatus; import com.wemirr.platform.ai.core.enums.KnowledgeItemType; import io.swagger.v3.oas.annotations.media.Schema; @@ -118,7 +118,7 @@ public class KnowledgeItemResp { /** * 扩展元数据(JSON) */ - @TableField(value = "metadata", typeHandler = MapTypeHandler.class) + @TableField(value = "metadata", typeHandler = JacksonTypeHandler.class) private Map metadata; @Schema(description = "创建时间") diff --git a/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/domain/dto/rep/VectorizationRep.java b/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/domain/dto/rep/VectorizationRep.java index 851cb867b1fe5221278a623e445f6897039140f3..d33286001977706850105ff75fcb6825f7c3aaa4 100644 --- a/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/domain/dto/rep/VectorizationRep.java +++ b/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/domain/dto/rep/VectorizationRep.java @@ -1,7 +1,7 @@ package com.wemirr.platform.ai.domain.dto.rep; import com.baomidou.mybatisplus.annotation.TableField; -import com.wemirr.framework.db.mybatisplus.handler.type.JsonTypeHandler; +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; import lombok.Data; import java.util.Map; @@ -58,7 +58,7 @@ public class VectorizationRep { /** * 结果向量ID列表(JSON格式) */ - @TableField(value = "vector_ids", typeHandler = JsonTypeHandler.class) + @TableField(value = "vector_ids", typeHandler = JacksonTypeHandler.class) private Map vectorIds; /** diff --git a/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/domain/dto/req/KnowledgeBaseSaveReq.java b/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/domain/dto/req/KnowledgeBaseSaveReq.java index 471126d9d45f4d5d180c0ecf16713338f5a43b23..fe9c9df11833f45dba77243771b98b84f4ec1d60 100644 --- a/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/domain/dto/req/KnowledgeBaseSaveReq.java +++ b/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/domain/dto/req/KnowledgeBaseSaveReq.java @@ -1,7 +1,7 @@ package com.wemirr.platform.ai.domain.dto.req; import com.baomidou.mybatisplus.annotation.TableField; -import com.wemirr.framework.db.mybatisplus.handler.type.MapTypeHandler; +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; import lombok.Data; @@ -48,7 +48,7 @@ public class KnowledgeBaseSaveReq { private Long embeddingModelId; @Schema(description = "元数据") - @TableField(typeHandler = MapTypeHandler.class) + @TableField(typeHandler = JacksonTypeHandler.class) private Map metadata; } diff --git a/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/domain/entity/KnowledgeBase.java b/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/domain/entity/KnowledgeBase.java index cdfeecbfa273f406bbbbbead6c9ae252d24b947b..50dfb4bf5ffdfd976b62469996906d2456a40e76 100644 --- a/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/domain/entity/KnowledgeBase.java +++ b/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/domain/entity/KnowledgeBase.java @@ -2,8 +2,8 @@ package com.wemirr.platform.ai.domain.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; import com.wemirr.framework.commons.entity.SuperEntity; -import com.wemirr.framework.db.mybatisplus.handler.type.MapTypeHandler; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; import lombok.Data; @@ -71,6 +71,6 @@ public class KnowledgeBase extends SuperEntity { private Integer version; @Schema(description = "元数据") - @TableField(typeHandler = MapTypeHandler.class) + @TableField(typeHandler = JacksonTypeHandler.class) private Map metadata; } diff --git a/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/domain/entity/KnowledgeChunk.java b/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/domain/entity/KnowledgeChunk.java index 445691846487821923d247245b979940da1c46fd..5e43a380b8f323db0fe24945396612e596bbeea3 100644 --- a/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/domain/entity/KnowledgeChunk.java +++ b/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/domain/entity/KnowledgeChunk.java @@ -2,8 +2,8 @@ package com.wemirr.platform.ai.domain.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; import com.wemirr.framework.commons.entity.SuperEntity; -import com.wemirr.framework.db.mybatisplus.handler.type.MapTypeHandler; import com.wemirr.platform.ai.core.enums.ChunkType; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; @@ -89,7 +89,7 @@ public class KnowledgeChunk extends SuperEntity { /** * 分片元数据 */ - @TableField(value = "metadata", typeHandler = MapTypeHandler.class) + @TableField(value = "metadata", typeHandler = JacksonTypeHandler.class) private Map metadata; @Schema(description = "租户ID") diff --git a/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/domain/entity/KnowledgeItem.java b/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/domain/entity/KnowledgeItem.java index 92b5907d59498ccd15828bd6ceaebf9d4ab5f37d..d13687775da4c8c02310c5143e555ae370d2bb87 100644 --- a/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/domain/entity/KnowledgeItem.java +++ b/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/domain/entity/KnowledgeItem.java @@ -2,8 +2,8 @@ package com.wemirr.platform.ai.domain.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; import com.wemirr.framework.commons.entity.SuperEntity; -import com.wemirr.framework.db.mybatisplus.handler.type.MapTypeHandler; import com.wemirr.platform.ai.core.enums.KnowledgeItemStatus; import com.wemirr.platform.ai.core.enums.KnowledgeItemType; import io.swagger.v3.oas.annotations.media.Schema; @@ -117,7 +117,7 @@ public class KnowledgeItem extends SuperEntity { /** * 扩展元数据(JSON) */ - @TableField(value = "metadata", typeHandler = MapTypeHandler.class) + @TableField(value = "metadata", typeHandler = JacksonTypeHandler.class) private Map metadata; @Schema(description = "租户ID") diff --git a/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/domain/entity/ModelConfig.java b/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/domain/entity/ModelConfig.java index 74eabd6152656aeba680f5fa48201f0a4dcad6b6..2fbcad38851e5b2ec4fb0994f5c6151249d8f90e 100644 --- a/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/domain/entity/ModelConfig.java +++ b/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/domain/entity/ModelConfig.java @@ -2,8 +2,8 @@ package com.wemirr.platform.ai.domain.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; import com.wemirr.framework.commons.entity.SuperEntity; -import com.wemirr.framework.db.mybatisplus.handler.type.MapTypeHandler; import com.wemirr.platform.ai.core.enums.ModelType; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; @@ -48,7 +48,7 @@ public class ModelConfig extends SuperEntity { private String baseUrl; @Schema(description = "模型配置属性") - @TableField(typeHandler = MapTypeHandler.class) + @TableField(typeHandler = JacksonTypeHandler.class) protected Map variables; @Schema(description = "租户ID") diff --git a/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/domain/entity/VectorMetadata.java b/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/domain/entity/VectorMetadata.java index 8d60d3b6e4fe8d9f96941e0d47899bb3c8ea4bf5..ad90cdd735c963234708479b52ef92b70b9ad8e3 100644 --- a/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/domain/entity/VectorMetadata.java +++ b/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/domain/entity/VectorMetadata.java @@ -2,8 +2,8 @@ package com.wemirr.platform.ai.domain.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; import com.wemirr.framework.commons.entity.SuperEntity; -import com.wemirr.framework.db.mybatisplus.handler.type.MapTypeHandler; import com.wemirr.platform.ai.core.enums.ChunkType; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; @@ -88,7 +88,7 @@ public class VectorMetadata extends SuperEntity { /** * 扩展元数据 */ - @TableField(value = "metadata", typeHandler = MapTypeHandler.class) + @TableField(value = "metadata", typeHandler = JacksonTypeHandler.class) private Map metadata; @Schema(description = "租户ID") diff --git a/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/domain/entity/VectorStore.java b/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/domain/entity/VectorStore.java index 2aad14a2b67133268deb7e32235904dee49a2ee5..0894299d36d8d44770d0820dcc5fb917dfc56818 100644 --- a/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/domain/entity/VectorStore.java +++ b/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/domain/entity/VectorStore.java @@ -2,8 +2,8 @@ package com.wemirr.platform.ai.domain.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; import com.wemirr.framework.commons.entity.SuperEntity; -import com.wemirr.framework.db.mybatisplus.handler.type.MapTypeHandler; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; import lombok.Data; @@ -58,7 +58,7 @@ public class VectorStore extends SuperEntity { /** * 元数据 */ - @TableField(value = "metadata", typeHandler = MapTypeHandler.class) + @TableField(value = "metadata", typeHandler = JacksonTypeHandler.class) private Map metadata; @Schema(description = "租户ID") diff --git a/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/domain/entity/VectorizationTask.java b/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/domain/entity/VectorizationTask.java index 53eb8156a4c596debaa718258cc20ce9c28748be..8cdaf16c0d0ee5d8e3ec59a8dae9eb7a42e5301e 100644 --- a/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/domain/entity/VectorizationTask.java +++ b/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/domain/entity/VectorizationTask.java @@ -2,8 +2,8 @@ package com.wemirr.platform.ai.domain.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; import com.wemirr.framework.commons.entity.SuperEntity; -import com.wemirr.framework.db.mybatisplus.handler.type.JsonTypeHandler; import com.wemirr.platform.ai.service.VectorService.VectorizationTaskStatus; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; @@ -79,7 +79,7 @@ public class VectorizationTask extends SuperEntity { /** * 结果向量ID列表(JSON格式) */ - @TableField(value = "vector_ids", typeHandler = JsonTypeHandler.class) + @TableField(value = "vector_ids", typeHandler = JacksonTypeHandler.class) private Map vectorIds; /** diff --git a/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/repository/KnowledgeChunkMapper.xml b/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/repository/KnowledgeChunkMapper.xml index 0f9869c7975165624bb45469fc53beadc1ac0437..7fab8398eecaaa08776765b5c9c3f79cf726c4d4 100644 --- a/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/repository/KnowledgeChunkMapper.xml +++ b/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/repository/KnowledgeChunkMapper.xml @@ -73,7 +73,7 @@ ( #{chunk.kbId}, #{chunk.itemId}, #{chunk.chunkType}, #{chunk.content}, #{chunk.contentHash}, #{chunk.dimension}, - #{chunk.metadata,typeHandler=com.wemirr.framework.db.mybatisplus.handler.type.JsonTypeHandler}, + #{chunk.metadata,typeHandler=com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler}, #{chunk.deleted}, #{chunk.createTime}, #{chunk.updateTime} ) diff --git a/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/repository/VectorMetadataMapper.xml b/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/repository/VectorMetadataMapper.xml index b01d51441d03a7f1b3c71e8e39dad027ffaf131a..59ba49a9bb586f83709b73ad0174633a2f2f4517 100644 --- a/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/repository/VectorMetadataMapper.xml +++ b/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/repository/VectorMetadataMapper.xml @@ -12,7 +12,7 @@ ( #{metadata.vectorId}, #{metadata.kbId}, #{metadata.itemId}, #{metadata.chunkId}, - #{metadata.metadata,typeHandler=com.wemirr.framework.db.mybatisplus.handler.type.JsonTypeHandler}, + #{metadata.metadata,typeHandler=com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler}, #{metadata.createTime}, #{metadata.updateTime} ) diff --git a/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/repository/VectorizationTaskMapper.xml b/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/repository/VectorizationTaskMapper.xml index 129feb97ccd5ed39cc77a0a2defc7aa96cedd204..03e85588260fbe037e47865f7bc815c8aad306bf 100644 --- a/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/repository/VectorizationTaskMapper.xml +++ b/wemirr-plugin/wemirr-platform-ai/src/main/java/com/wemirr/platform/ai/repository/VectorizationTaskMapper.xml @@ -42,7 +42,7 @@ UPDATE ai_kb_vectorization_task - SET vector_ids = #{vectorIds,typeHandler=com.wemirr.framework.db.mybatisplus.handler.type.JsonTypeHandler} + SET vector_ids = #{vectorIds,typeHandler=com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler} WHERE task_id = #{taskId} diff --git a/wemirr-plugin/wemirr-platform-workflow/src/main/java/com/wemirr/platform/workflow/controller/FlowDefinitionController.java b/wemirr-plugin/wemirr-platform-workflow/src/main/java/com/wemirr/platform/workflow/controller/FlowDefinitionController.java index 1e80fbd79ea40002c6028ab922e1fc9bcee2ba50..bcd9e79eb84206fe5f72e3e6d1e6d3fbc76a0ad4 100644 --- a/wemirr-plugin/wemirr-platform-workflow/src/main/java/com/wemirr/platform/workflow/controller/FlowDefinitionController.java +++ b/wemirr-plugin/wemirr-platform-workflow/src/main/java/com/wemirr/platform/workflow/controller/FlowDefinitionController.java @@ -1,6 +1,5 @@ package com.wemirr.platform.workflow.controller; -import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; import com.wemirr.framework.redis.plus.anontation.RedisLock; import com.wemirr.framework.redis.plus.anontation.RedisParam; @@ -24,6 +23,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.util.List; +import java.util.Map; /** @@ -112,7 +112,7 @@ public class FlowDefinitionController { */ @GetMapping("/{id}/export") @Operation(summary = "导出定义", description = "导出流程定义 JSON") - public JSONObject export(@PathVariable Long id) { + public Map export(@PathVariable Long id) { return defExtService.exportJson(id); } diff --git a/wemirr-plugin/wemirr-platform-workflow/src/main/java/com/wemirr/platform/workflow/domain/dto/req/FormDesignSaveReq.java b/wemirr-plugin/wemirr-platform-workflow/src/main/java/com/wemirr/platform/workflow/domain/dto/req/FormDesignSaveReq.java index 217b65054c47feba9a462a01674d62cde5da0236..0d36ee45d9286fbcce07bc10ce89eda55d4a7118 100644 --- a/wemirr-plugin/wemirr-platform-workflow/src/main/java/com/wemirr/platform/workflow/domain/dto/req/FormDesignSaveReq.java +++ b/wemirr-plugin/wemirr-platform-workflow/src/main/java/com/wemirr/platform/workflow/domain/dto/req/FormDesignSaveReq.java @@ -1,10 +1,11 @@ package com.wemirr.platform.workflow.domain.dto.req; -import com.alibaba.fastjson2.JSONArray; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotEmpty; import lombok.Data; +import java.util.ArrayList; + /** * @author Levin */ @@ -16,5 +17,5 @@ public class FormDesignSaveReq { private String script; @NotEmpty(message = "表单字段不能为空") - private JSONArray schemas; + private ArrayList schemas; } diff --git a/wemirr-plugin/wemirr-platform-workflow/src/main/java/com/wemirr/platform/workflow/domain/dto/req/InstanceStartReq.java b/wemirr-plugin/wemirr-platform-workflow/src/main/java/com/wemirr/platform/workflow/domain/dto/req/InstanceStartReq.java index dad74bdecb72c1d60a9f36d80afeca827c17e086..174e677dd95c049c23898b175932c94d0591c05a 100644 --- a/wemirr-plugin/wemirr-platform-workflow/src/main/java/com/wemirr/platform/workflow/domain/dto/req/InstanceStartReq.java +++ b/wemirr-plugin/wemirr-platform-workflow/src/main/java/com/wemirr/platform/workflow/domain/dto/req/InstanceStartReq.java @@ -1,11 +1,12 @@ package com.wemirr.platform.workflow.domain.dto.req; -import com.alibaba.fastjson2.JSONObject; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.Data; +import java.util.Map; + /** * 启动流程实例需要的参数 * @@ -27,6 +28,6 @@ public class InstanceStartReq { @NotNull(message = "表单数据不能为空") @Schema(description = "表单数据") - private JSONObject formData; + private Map formData; } diff --git a/wemirr-plugin/wemirr-platform-workflow/src/main/java/com/wemirr/platform/workflow/domain/dto/resp/DesignModelFormResp.java b/wemirr-plugin/wemirr-platform-workflow/src/main/java/com/wemirr/platform/workflow/domain/dto/resp/DesignModelFormResp.java index 3b30b5ca914c5dcdd571d399b8a605a089c71fe3..bdb95288cca9ff312638be534e70bc79f1c0ecb5 100644 --- a/wemirr-plugin/wemirr-platform-workflow/src/main/java/com/wemirr/platform/workflow/domain/dto/resp/DesignModelFormResp.java +++ b/wemirr-plugin/wemirr-platform-workflow/src/main/java/com/wemirr/platform/workflow/domain/dto/resp/DesignModelFormResp.java @@ -1,6 +1,5 @@ package com.wemirr.platform.workflow.domain.dto.resp; -import com.alibaba.fastjson2.JSONArray; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotEmpty; import lombok.AllArgsConstructor; @@ -8,6 +7,8 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.ArrayList; + /** * @author Levin */ @@ -21,7 +22,7 @@ public class DesignModelFormResp { private String script; @NotEmpty(message = "表单字段不能为空") - private JSONArray schemas; + private ArrayList schemas; @NotEmpty(message = "模型ID") private Long modelId; diff --git a/wemirr-plugin/wemirr-platform-workflow/src/main/java/com/wemirr/platform/workflow/domain/dto/resp/ProcessInstanceFormPreviewResp.java b/wemirr-plugin/wemirr-platform-workflow/src/main/java/com/wemirr/platform/workflow/domain/dto/resp/ProcessInstanceFormPreviewResp.java index 26a4d4532f1cd27f2bd35e68c7a373cb83c00b34..3ac355639100d31a63fc0a5795c14fb2d5db71cf 100644 --- a/wemirr-plugin/wemirr-platform-workflow/src/main/java/com/wemirr/platform/workflow/domain/dto/resp/ProcessInstanceFormPreviewResp.java +++ b/wemirr-plugin/wemirr-platform-workflow/src/main/java/com/wemirr/platform/workflow/domain/dto/resp/ProcessInstanceFormPreviewResp.java @@ -1,7 +1,5 @@ package com.wemirr.platform.workflow.domain.dto.resp; -import com.alibaba.fastjson2.JSONArray; -import com.alibaba.fastjson2.JSONObject; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotEmpty; import lombok.AllArgsConstructor; @@ -9,6 +7,9 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.ArrayList; +import java.util.LinkedHashMap; + /** * 流程表单渲染返回参数 * @@ -24,7 +25,7 @@ public class ProcessInstanceFormPreviewResp { private FormDesign formDesign; @Schema(description = "表单数据") - private JSONObject formData; + private LinkedHashMap formData; @Data @Builder @@ -36,7 +37,7 @@ public class ProcessInstanceFormPreviewResp { private String script; @NotEmpty(message = "表单字段不能为空") - private JSONArray schemas; + private ArrayList schemas; } } diff --git a/wemirr-plugin/wemirr-platform-workflow/src/main/java/com/wemirr/platform/workflow/mq/listener/CustomGlobalListener.java b/wemirr-plugin/wemirr-platform-workflow/src/main/java/com/wemirr/platform/workflow/mq/listener/CustomGlobalListener.java index 6bc127b9584175c5a9f54c3fdf5a8ce03385a604..df393cd868fc6c2f0584933b922c3415637d6aaa 100644 --- a/wemirr-plugin/wemirr-platform-workflow/src/main/java/com/wemirr/platform/workflow/mq/listener/CustomGlobalListener.java +++ b/wemirr-plugin/wemirr-platform-workflow/src/main/java/com/wemirr/platform/workflow/mq/listener/CustomGlobalListener.java @@ -2,8 +2,8 @@ package com.wemirr.platform.workflow.mq.listener; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson2.JSONObject; import com.google.common.collect.Lists; +import com.wemirr.framework.commons.JacksonUtils; import com.wemirr.platform.iam.feign.UserFeign; import com.wemirr.platform.iam.feign.domain.resp.UserInfoResp; import com.wemirr.platform.workflow.feign.domain.enums.ApprovalAction; @@ -217,7 +217,7 @@ public class CustomGlobalListener implements GlobalListener { Map variable = listenerVariable.getVariable(); BusinessCommonMqReq businessCommonMqDto = BusinessCommonMqReq.builder() .businessCode(instance.getBusinessId()) - .workflowCommonReq(StrUtil.isBlank(instance.getExt()) ? null : JSONObject.parseObject(instance.getExt(), WorkflowCommonReq.class)) + .workflowCommonReq(StrUtil.isBlank(instance.getExt()) ? null : JacksonUtils.toBean(instance.getExt(), WorkflowCommonReq.class)) .instanceStatus(ApprovalStatus.of(instance.getFlowStatus())) .createBy(customPermissionHandler.getHandler()) .createName(customPermissionHandler.getHandlerName()) @@ -231,7 +231,7 @@ public class CustomGlobalListener implements GlobalListener { if (null == definition || null == DefId2Tag.ofTag(definition.getFlowCode())) { return; } - transactionMQTemplate.sendOrderlyMessage(workflowTopic, DefId2Tag.ofTag(definition.getFlowCode()), businessCommonMqDto.getBusinessCode(), JSONObject.toJSONString(businessCommonMqDto), Boolean.TRUE); + transactionMQTemplate.sendOrderlyMessage(workflowTopic, DefId2Tag.ofTag(definition.getFlowCode()), businessCommonMqDto.getBusinessCode(), JacksonUtils.toJson(businessCommonMqDto), Boolean.TRUE); } log.info("全局完成监听器执行结束......"); } diff --git a/wemirr-plugin/wemirr-platform-workflow/src/main/java/com/wemirr/platform/workflow/service/DefExtService.java b/wemirr-plugin/wemirr-platform-workflow/src/main/java/com/wemirr/platform/workflow/service/DefExtService.java index b873210897fa108466135e028f847d1b3ab34b74..595fba4f23c113766da6cebe5c9d991bdb4d50dd 100644 --- a/wemirr-plugin/wemirr-platform-workflow/src/main/java/com/wemirr/platform/workflow/service/DefExtService.java +++ b/wemirr-plugin/wemirr-platform-workflow/src/main/java/com/wemirr/platform/workflow/service/DefExtService.java @@ -1,6 +1,5 @@ package com.wemirr.platform.workflow.service; -import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; import com.wemirr.platform.workflow.domain.dto.req.DefinitionDeployReq; import com.wemirr.platform.workflow.domain.dto.req.DefinitionPageReq; @@ -16,6 +15,7 @@ import org.dromara.warm.flow.core.dto.DefJson; import java.io.InputStream; import java.util.List; +import java.util.Map; /** * 操作warm-flow @@ -102,7 +102,7 @@ public interface DefExtService { * @param id id * @return 查询结果 */ - JSONObject exportJson(Long id); + Map exportJson(Long id); /** * 导入流程定义 diff --git a/wemirr-plugin/wemirr-platform-workflow/src/main/java/com/wemirr/platform/workflow/service/impl/DefExtServiceImpl.java b/wemirr-plugin/wemirr-platform-workflow/src/main/java/com/wemirr/platform/workflow/service/impl/DefExtServiceImpl.java index 927af9817d1a7c383e36cf5a8a1625456ca8e9de..bffe2baec281aacdf523916eaebd79b1e18cb642 100644 --- a/wemirr-plugin/wemirr-platform-workflow/src/main/java/com/wemirr/platform/workflow/service/impl/DefExtServiceImpl.java +++ b/wemirr-plugin/wemirr-platform-workflow/src/main/java/com/wemirr/platform/workflow/service/impl/DefExtServiceImpl.java @@ -2,9 +2,9 @@ package com.wemirr.platform.workflow.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.extra.spring.SpringUtil; -import com.alibaba.fastjson2.JSONArray; -import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.fasterxml.jackson.core.type.TypeReference; +import com.wemirr.framework.commons.JacksonUtils; import com.wemirr.framework.commons.exception.CheckedException; import com.wemirr.framework.commons.security.AuthenticationContext; import com.wemirr.framework.db.mybatisplus.wrap.Wraps; @@ -38,6 +38,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.io.InputStream; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Optional; @@ -141,8 +142,9 @@ public class DefExtServiceImpl implements DefExtService { } @Override - public JSONObject exportJson(Long id) { - return JSONObject.parseObject(defService.exportJson(id)); + public Map exportJson(Long id) { + return JacksonUtils.readValue(defService.exportJson(id), new TypeReference<>() { + }); } @Override @@ -155,7 +157,7 @@ public class DefExtServiceImpl implements DefExtService { @Transactional(rollbackFor = Exception.class) public void addFormDesign(Long id, FormDesignSaveReq req) { final FlowModelForm modelForm = this.processModelFormMapper.selectOne(FlowModelForm::getModelId, id); - String schemasJson = req.getSchemas().toJSONString(); + String schemasJson = JacksonUtils.toJson(req.getSchemas()); if (modelForm == null) { this.processModelFormMapper.insert(FlowModelForm.builder() .modelId(id) @@ -177,7 +179,8 @@ public class DefExtServiceImpl implements DefExtService { } return DesignModelFormResp.builder() .modelId(modelForm.getModelId()) - .schemas(JSONArray.parseArray(modelForm.getFormSchemas())) + .schemas(JacksonUtils.readValue(modelForm.getFormSchemas(), new TypeReference<>() { + })) .script(modelForm.getFormScript()) .build(); } @@ -210,7 +213,7 @@ public class DefExtServiceImpl implements DefExtService { throw CheckedException.badRequest("模型未部署"); } // 设置流程参数 - JSONObject variables = new JSONObject(req.getFormData()); + Map variables = new LinkedHashMap<>(req.getFormData()); variables.put("ext.instanceName", req.getInstanceName()); variables.put("ext.businessKey", req.getBusinessKey()); variables.put("ext.businessGroup", req.getBusinessGroup()); @@ -228,7 +231,7 @@ public class DefExtServiceImpl implements DefExtService { .businessType(DefId2Tag.ofBusinessType(definition.getFlowCode())) .instanceId(instance.getId()).businessId(req.getBusinessKey()).businessCode(req.getBusinessKey()) .title(definition.getFlowName()) - .formData(req.getFormData() == null ? null : req.getFormData().toJSONString()) + .formData(req.getFormData() == null ? null : JacksonUtils.toJson(req.getFormData())) .formSchemas(form.getFormSchemas()) .formScript(form.getFormScript()) .build(); diff --git a/wemirr-plugin/wemirr-platform-workflow/src/main/java/com/wemirr/platform/workflow/service/impl/InstanceExtServiceImpl.java b/wemirr-plugin/wemirr-platform-workflow/src/main/java/com/wemirr/platform/workflow/service/impl/InstanceExtServiceImpl.java index 4502fa17021e1a12d4f626bde6890c37d66b7936..a30f2a0588ae9729d05fb23d0217652eb0a9443f 100644 --- a/wemirr-plugin/wemirr-platform-workflow/src/main/java/com/wemirr/platform/workflow/service/impl/InstanceExtServiceImpl.java +++ b/wemirr-plugin/wemirr-platform-workflow/src/main/java/com/wemirr/platform/workflow/service/impl/InstanceExtServiceImpl.java @@ -2,10 +2,11 @@ package com.wemirr.platform.workflow.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson2.JSONArray; -import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.JsonNode; import com.wemirr.framework.commons.BeanUtilPlus; +import com.wemirr.framework.commons.JacksonUtils; import com.wemirr.framework.commons.exception.CheckedException; import com.wemirr.framework.commons.security.AuthenticationContext; import com.wemirr.framework.db.mybatisplus.ext.SuperServiceImpl; @@ -76,8 +77,8 @@ public class InstanceExtServiceImpl extends SuperServiceImpl() {})).script(instance.getFormScript()).build()) + .formData(JacksonUtils.readValue(instance.getFormData(), new TypeReference<>() {})).build(); detail.setTaskList(taskList); detail.setFormPreview(formPreview); return detail; @@ -91,10 +92,10 @@ public class InstanceExtServiceImpl extends SuperServiceImpl CheckedException.notFound("流程不存在")); //通过实例ID获取表单数据 return ProcessInstanceFormPreviewResp.builder().formDesign(ProcessInstanceFormPreviewResp.FormDesign.builder() - .schemas(JSONArray.parseArray(ext.getFormSchemas())).script(ext.getFormScript()).build()) - .formData(JSONObject.parse(ext.getFormData())).build(); + .schemas(JacksonUtils.readValue(ext.getFormSchemas(), new TypeReference<>() { + })).script(ext.getFormScript()).build()) + .formData(JacksonUtils.readValue(ext.getFormData(), new TypeReference<>() {})).build(); } // @Override