|
@@ -1,49 +0,0 @@
|
|
-package com.backendsys.config.Serializer;
|
|
|
|
-
|
|
|
|
-import com.fasterxml.jackson.core.JsonGenerator;
|
|
|
|
-import com.fasterxml.jackson.databind.BeanProperty;
|
|
|
|
-import com.fasterxml.jackson.databind.JsonSerializer;
|
|
|
|
-import com.fasterxml.jackson.databind.SerializerProvider;
|
|
|
|
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
|
|
|
-import com.fasterxml.jackson.databind.ser.ContextualSerializer;
|
|
|
|
-import org.springframework.web.context.request.RequestContextHolder;
|
|
|
|
-import org.springframework.web.context.request.ServletRequestAttributes;
|
|
|
|
-
|
|
|
|
-import java.io.IOException;
|
|
|
|
-import java.time.LocalDateTime;
|
|
|
|
-import java.time.ZoneId;
|
|
|
|
-import java.time.format.DateTimeFormatter;
|
|
|
|
-import java.util.Optional;
|
|
|
|
-
|
|
|
|
-public class LocalDateTimeSerializer extends JsonSerializer<LocalDateTime> implements ContextualSerializer {
|
|
|
|
-
|
|
|
|
- private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public void serialize(LocalDateTime value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
|
|
|
|
-
|
|
|
|
- System.out.println("LocalDateTimeSerializer serialize:");
|
|
|
|
-
|
|
|
|
- // 从请求上下文中获取 timezone
|
|
|
|
- String timezone = getAttributeFromRequest("timezone");
|
|
|
|
- // 如果没有 timezone,则默认使用 Asia/Shanghai
|
|
|
|
- ZoneId zoneId = ZoneId.of(Optional.ofNullable(timezone).orElse("Asia/Shanghai"));
|
|
|
|
- // 转换为指定时区的本地时间
|
|
|
|
- LocalDateTime localDateTime = value.atZone(ZoneId.of("UTC")).withZoneSameInstant(zoneId).toLocalDateTime();
|
|
|
|
- // 格式化为字符串
|
|
|
|
- gen.writeString(FORMATTER.format(localDateTime));
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public JsonSerializer<?> createContextual(SerializerProvider prov, BeanProperty property) {
|
|
|
|
- return this;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- private String getAttributeFromRequest(String attributeName) {
|
|
|
|
- ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
|
|
|
|
- if (requestAttributes != null) {
|
|
|
|
- return (String) requestAttributes.getRequest().getAttribute(attributeName);
|
|
|
|
- }
|
|
|
|
- return null;
|
|
|
|
- }
|
|
|
|
-}
|
|
|