diff --git a/src/main/java/mjkf/xinke/main/common/http/FuHttpResponse.java b/src/main/java/mjkf/xinke/main/common/http/FuHttpResponse.java index 9c06dca..ca7f10d 100644 --- a/src/main/java/mjkf/xinke/main/common/http/FuHttpResponse.java +++ b/src/main/java/mjkf/xinke/main/common/http/FuHttpResponse.java @@ -1,6 +1,8 @@ package mjkf.xinke.main.common.http; import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.databind.PropertyNamingStrategy; +import com.fasterxml.jackson.databind.annotation.JsonNaming; import com.jgy.xxs.core.http.NcMeta; import com.jgy.xxs.core.http.NcPagination; import com.jgy.xxs.core.http.resp.HttpResponse; @@ -9,6 +11,7 @@ import lombok.Getter; @Getter +@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) public class FuHttpResponse extends NcHttpResponse { @JsonIgnore private NcMeta meta; diff --git a/src/main/java/mjkf/xinke/main/config/NcHttpResponseConfig.java b/src/main/java/mjkf/xinke/main/config/NcHttpResponseConfig.java new file mode 100644 index 0000000..d0646c7 --- /dev/null +++ b/src/main/java/mjkf/xinke/main/config/NcHttpResponseConfig.java @@ -0,0 +1,58 @@ +package mjkf.xinke.main.config; + +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.PropertyAccessor; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer; +import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; +import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.MediaType; +import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; + +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.format.DateTimeFormatter; +import java.util.List; + +/** + * NcHttpResponseConfig + * + * @author han0 + * @date 2019-11-21 + */ +@Configuration +public class NcHttpResponseConfig { + + /** + * 替换对Response的转换mapper,此处可以自定义返回统一的json格式转换器 + * @return + */ + @Bean + public MappingJackson2HttpMessageConverter getMappingJackson2HttpMessageConverter() { + MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter(); + + // 设置日期格式 + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY); + // objectMapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE); + objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")); + objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); + JavaTimeModule javaTimeModule = new JavaTimeModule(); + javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + javaTimeModule.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); + javaTimeModule.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern("HH:mm:ss"))); + objectMapper.registerModule(javaTimeModule); + mappingJackson2HttpMessageConverter.setObjectMapper(objectMapper); + + // 设置中文编码格式 + var list = List.of(MediaType.APPLICATION_JSON_UTF8); + mappingJackson2HttpMessageConverter.setSupportedMediaTypes(list); + return mappingJackson2HttpMessageConverter; + } +} diff --git a/src/main/java/mjkf/xinke/main/model/db/Material.java b/src/main/java/mjkf/xinke/main/model/db/Material.java index acd4717..ea49db9 100644 --- a/src/main/java/mjkf/xinke/main/model/db/Material.java +++ b/src/main/java/mjkf/xinke/main/model/db/Material.java @@ -8,9 +8,8 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import java.io.Serializable; import java.time.LocalDateTime; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; +import com.fasterxml.jackson.databind.PropertyNamingStrategy; +import com.fasterxml.jackson.databind.annotation.JsonNaming; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -30,6 +29,7 @@ import mjkf.xinke.main.model.vo.MaterialEditRequest; */ @Getter @Setter +@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) @FieldNameConstants @TableName("MATERIAL") @ApiModel(value = "Material对象", description = "材料") @@ -45,8 +45,6 @@ public class Material extends Model { @TableField("UPDATE_USER_NAME") private String updateUserName; - @JsonSerialize(using = LocalDateTimeSerializer.class) - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @ApiModelProperty("最后更新时间") @TableField("UPDATE_TIME") private LocalDateTime updateTime; @@ -59,8 +57,6 @@ public class Material extends Model { @TableField("CREATE_USER_NAME") private String createUserName; - @JsonSerialize(using = LocalDateTimeSerializer.class) - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @ApiModelProperty("创建时间") @TableField("CREATE_TIME") private LocalDateTime createTime; @@ -73,8 +69,6 @@ public class Material extends Model { @TableField("DELETE_USER_NAME") private String deleteUserName; - @JsonSerialize(using = LocalDateTimeSerializer.class) - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @ApiModelProperty("删除时间") @TableField("DELETE_TIME") private LocalDateTime deleteTime;