feat(base): 为 BaseEntity 添加序列化接口并配置 Jackson 时间和 Long 类型处理

- 为 BaseEntity 类实现 Serializable 接口以支持序列化
- 新增 JacksonConfig 配置类处理时间格式和 Long 类型精度问题
- 配置时区为 Asia/Shanghai 和中国地区格式
- 添加 Long 类型的序列化和反序列化器避免前端精度丢失
- 将项目版本从 1.5.3 升级到 1.5.4
This commit is contained in:
zkh
2025-12-31 12:03:26 +08:00
parent eeac5b430c
commit ab39c0f9b2
8 changed files with 111 additions and 54 deletions

View File

@ -0,0 +1,56 @@
package vip.jcfd.web.config;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.io.IOException;
import java.time.ZoneId;
import java.util.Locale;
import java.util.TimeZone;
@Configuration
public class JacksonConfig {
/**
* Configures Jackson mapper with locale, timezone, date format, serializer
*/
@Bean
public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
return jacksonObjectMapperBuilder -> {
jacksonObjectMapperBuilder.locale(Locale.CHINA);
jacksonObjectMapperBuilder.timeZone(TimeZone.getTimeZone(ZoneId.of("Asia/Shanghai")));
jacksonObjectMapperBuilder.simpleDateFormat("yyyy-MM-dd HH:mm:ss");
jacksonObjectMapperBuilder.serializers(new LongSerializer());
jacksonObjectMapperBuilder.deserializers(new LongDeserializer());
};
}
public static class LongSerializer extends JsonSerializer<Long> {
@Override
public void serialize(Long value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
if (value == null) {
gen.writeNull();
return;
}
gen.writeString(String.valueOf(value));
}
}
public static class LongDeserializer extends JsonDeserializer<Long> {
@Override
public Long deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
if (p.getText() == null) {
return null;
}
return Long.parseLong(p.getText());
}
}
}