diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/common/json/serializer/BigNumberSerializer.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/common/json/serializer/BigNumberSerializer.java
new file mode 100644
index 00000000..932bdde9
--- /dev/null
+++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/common/json/serializer/BigNumberSerializer.java
@@ -0,0 +1,40 @@
+package net.lab1024.sa.base.common.json.serializer;
+
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.databind.SerializerProvider;
+import com.fasterxml.jackson.databind.annotation.JacksonStdImpl;
+import com.fasterxml.jackson.databind.ser.std.NumberSerializer;
+
+import java.io.IOException;
+
+/**
+ * 超出 JS 最大最小值 处理
+ */
+@JacksonStdImpl
+public class BigNumberSerializer extends NumberSerializer {
+
+ /**
+ * 根据 JS Number.MAX_SAFE_INTEGER 与 Number.MIN_SAFE_INTEGER 得来
+ */
+ private static final long MAX_SAFE_INTEGER = 9007199254740991L;
+ private static final long MIN_SAFE_INTEGER = -9007199254740991L;
+
+ /**
+ * 提供实例
+ */
+ public static final BigNumberSerializer INSTANCE = new BigNumberSerializer(Number.class);
+
+ public BigNumberSerializer(Class extends Number> rawType) {
+ super(rawType);
+ }
+
+ @Override
+ public void serialize(Number value, JsonGenerator gen, SerializerProvider provider) throws IOException {
+ // 超出范围 序列化位字符串
+ if (value.longValue() > MIN_SAFE_INTEGER && value.longValue() < MAX_SAFE_INTEGER) {
+ super.serialize(value, gen, provider);
+ } else {
+ gen.writeString(value.toString());
+ }
+ }
+}
\ No newline at end of file
diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/common/json/serializer/LongJsonSerializer.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/common/json/serializer/LongJsonSerializer.java
deleted file mode 100644
index aa295489..00000000
--- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/common/json/serializer/LongJsonSerializer.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package net.lab1024.sa.base.common.json.serializer;
-
-import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.JsonSerializer;
-import com.fasterxml.jackson.databind.SerializerProvider;
-
-import java.io.IOException;
-
-/**
- * Long类型序列化
- *
- * @Author 1024创新实验室-主任: 卓大
- * @Date 2020-06-02 22:55:07
- * @Wechat zhuoda1024
- * @Email lab1024@163.com
- * @Copyright 1024创新实验室
- */
-public class LongJsonSerializer extends JsonSerializer {
-
- public static final LongJsonSerializer INSTANCE = new LongJsonSerializer();
-
- @Override
- public void serialize(Long value, JsonGenerator gen, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
- if (null == value) {
- gen.writeNull();
- return;
- }
- // js中最大安全整数16位 Number.MAX_SAFE_INTEGER
- String longStr = String.valueOf(value);
- if (longStr.length() > 16) {
- gen.writeString(longStr);
- } else {
- gen.writeNumber(value);
- }
- }
-}
\ No newline at end of file
diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/config/JsonConfig.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/config/JsonConfig.java
index b9605c3c..488db956 100644
--- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/config/JsonConfig.java
+++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/config/JsonConfig.java
@@ -2,17 +2,20 @@ package net.lab1024.sa.base.config;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.LocalDateTimeUtil;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
-import net.lab1024.sa.base.common.json.serializer.LongJsonSerializer;
+import net.lab1024.sa.base.common.json.serializer.BigNumberSerializer;
import org.apache.commons.lang3.StringUtils;
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.convert.converter.Converter;
+import java.math.BigDecimal;
+import java.math.BigInteger;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeParseException;
@@ -36,7 +39,10 @@ public class JsonConfig {
builder.deserializers(new LocalDateTimeDeserializer(DatePattern.NORM_DATETIME_FORMAT.getDateTimeFormatter()));
builder.serializers(new LocalDateSerializer(DatePattern.NORM_DATE_FORMAT.getDateTimeFormatter()));
builder.serializers(new LocalDateTimeSerializer(DatePattern.NORM_DATETIME_FORMAT.getDateTimeFormatter()));
- builder.serializerByType(Long.class, LongJsonSerializer.INSTANCE);
+ builder.serializerByType(Long.class, BigNumberSerializer.INSTANCE);
+ builder.serializerByType(Long.TYPE, BigNumberSerializer.INSTANCE);
+ builder.serializerByType(BigInteger.class, BigNumberSerializer.INSTANCE);
+ builder.serializerByType(BigDecimal.class, ToStringSerializer.instance);
};
}
diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/config/TokenConfig.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/config/TokenConfig.java
index 0d7d076a..5cd77be4 100644
--- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/config/TokenConfig.java
+++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/config/TokenConfig.java
@@ -4,7 +4,7 @@ import cn.dev33.satoken.config.SaTokenConfig;
import net.lab1024.sa.base.module.support.securityprotect.service.Level3ProtectConfigService;
import org.springframework.context.annotation.Configuration;
-import javax.annotation.Resource;
+import jakarta.annotation.Resource;
/**
*