test
			
			
		
		
							parent
							
								
									b1a99cced7
								
							
						
					
					
						commit
						006ada7ca6
					
				| @ -0,0 +1,35 @@ | ||||
| package com.glxp.api.config; | ||||
| 
 | ||||
| import com.fasterxml.jackson.databind.ObjectMapper; | ||||
| import com.fasterxml.jackson.databind.module.SimpleModule; | ||||
| import com.glxp.api.config.serializer.*; | ||||
| import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; | ||||
| import org.springframework.context.annotation.Bean; | ||||
| import org.springframework.context.annotation.Configuration; | ||||
| import org.springframework.context.annotation.Primary; | ||||
| import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder; | ||||
| 
 | ||||
| import java.time.LocalDate; | ||||
| import java.time.LocalDateTime; | ||||
| 
 | ||||
| @Configuration | ||||
| public class JacksonConfig { | ||||
| 
 | ||||
|     @Bean | ||||
|     @Primary | ||||
| //    @ConditionalOnMissingBean(ObjectMapper.class)
 | ||||
|     public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) { | ||||
|         ObjectMapper objectMapper = builder.createXmlMapper(false).build(); | ||||
|         SimpleModule simpleModule = new SimpleModule(); | ||||
| 
 | ||||
|         simpleModule.addSerializer(Long.class, new LongJsonSerializer()); | ||||
|         simpleModule.addDeserializer(Long.class, new LongJsonDeserializer()); | ||||
|         simpleModule.addSerializer(LocalDate.class, new LocalDateJsonSerializer()); | ||||
|         simpleModule.addDeserializer(LocalDate.class, new LocalDateJsonDeserializer()); | ||||
|         simpleModule.addSerializer(LocalDateTime.class, new LocalDateTimeJsonSerializer()); | ||||
|         simpleModule.addDeserializer(LocalDateTime.class, new LocalDateTimeJsonDeserializer()); | ||||
| 
 | ||||
|         objectMapper.registerModule(simpleModule); | ||||
|         return objectMapper; | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,17 @@ | ||||
| package com.glxp.api.config.serializer; | ||||
| 
 | ||||
| import cn.hutool.json.JSONNull; | ||||
| import com.fasterxml.jackson.core.JsonGenerator; | ||||
| import com.fasterxml.jackson.databind.JsonSerializer; | ||||
| import com.fasterxml.jackson.databind.SerializerProvider; | ||||
| import org.springframework.boot.jackson.JsonComponent; | ||||
| 
 | ||||
| import java.io.IOException; | ||||
| 
 | ||||
| @JsonComponent | ||||
| public class JsonNullSerializer extends JsonSerializer<JSONNull> { | ||||
|     @Override | ||||
|     public void serialize(JSONNull jsonNull, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException { | ||||
|         jsonGenerator.writeNull(); | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,31 @@ | ||||
| package com.glxp.api.config.serializer; | ||||
| 
 | ||||
| import cn.hutool.core.date.DatePattern; | ||||
| import cn.hutool.core.date.LocalDateTimeUtil; | ||||
| import com.fasterxml.jackson.core.JsonParser; | ||||
| import com.fasterxml.jackson.databind.DeserializationContext; | ||||
| import com.fasterxml.jackson.databind.JsonDeserializer; | ||||
| import lombok.extern.slf4j.Slf4j; | ||||
| 
 | ||||
| import java.io.IOException; | ||||
| import java.time.LocalDate; | ||||
| import java.time.format.DateTimeFormatter; | ||||
| 
 | ||||
| /** | ||||
|  * 字符串转Long类型 | ||||
|  */ | ||||
| @Slf4j | ||||
| public class LocalDateJsonDeserializer extends JsonDeserializer<LocalDate> { | ||||
| 
 | ||||
|     @Override | ||||
|     public LocalDate deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { | ||||
|         String value = p.getText(); | ||||
|         try { | ||||
|             return value == null ? null : LocalDateTimeUtil.parseDate(value, DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)); | ||||
|         } catch (Exception e) { | ||||
|             log.error("日期格式解析错误", e); | ||||
|             return null; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,31 @@ | ||||
| package com.glxp.api.config.serializer; | ||||
| 
 | ||||
| import cn.hutool.core.date.DatePattern; | ||||
| import cn.hutool.core.date.LocalDateTimeUtil; | ||||
| import com.fasterxml.jackson.core.JsonParser; | ||||
| import com.fasterxml.jackson.databind.DeserializationContext; | ||||
| import com.fasterxml.jackson.databind.JsonDeserializer; | ||||
| import lombok.extern.slf4j.Slf4j; | ||||
| 
 | ||||
| import java.io.IOException; | ||||
| import java.time.LocalDateTime; | ||||
| import java.time.format.DateTimeFormatter; | ||||
| 
 | ||||
| /** | ||||
|  * 字符串转Long类型 | ||||
|  */ | ||||
| @Slf4j | ||||
| public class LocalDateTimeJsonDeserializer extends JsonDeserializer<LocalDateTime> { | ||||
| 
 | ||||
|     @Override | ||||
|     public LocalDateTime deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { | ||||
|         String value = p.getText(); | ||||
|         try { | ||||
|             return value == null ? null : LocalDateTimeUtil.parse(value, DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN)); | ||||
|         } catch (Exception e) { | ||||
|             log.error("日期格式解析错误", e); | ||||
|             return null; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,22 @@ | ||||
| package com.glxp.api.config.serializer; | ||||
| 
 | ||||
| import com.fasterxml.jackson.core.JsonParser; | ||||
| import com.fasterxml.jackson.databind.DeserializationContext; | ||||
| import com.fasterxml.jackson.databind.JsonDeserializer; | ||||
| import lombok.extern.slf4j.Slf4j; | ||||
| 
 | ||||
| import java.io.IOException; | ||||
| 
 | ||||
| /** | ||||
|  * 字符串转Long类型 | ||||
|  */ | ||||
| @Slf4j | ||||
| public class LongJsonDeserializer extends JsonDeserializer<Long> { | ||||
| 
 | ||||
|     @Override | ||||
|     public Long deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { | ||||
|         String value = p.getText(); | ||||
|         return value == null ? null : Long.parseLong(value); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -1,34 +1,18 @@ | ||||
| package com.glxp.api.util; | ||||
| 
 | ||||
| 
 | ||||
| import cn.hutool.core.lang.Snowflake; | ||||
| import cn.hutool.core.net.NetUtil; | ||||
| import cn.hutool.core.util.IdUtil; | ||||
| import com.fasterxml.jackson.annotation.JsonFormat; | ||||
| import org.springframework.stereotype.Component; | ||||
| import cn.hutool.core.util.RandomUtil; | ||||
| 
 | ||||
| import javax.annotation.PostConstruct; | ||||
| 
 | ||||
| /** | ||||
|  * @Author tan | ||||
|  * @Date 2021/10/16 16:23 | ||||
|  */ | ||||
| @Component | ||||
| public class SnowflakeUtil { | ||||
|     @JsonFormat(shape = JsonFormat.Shape.STRING) | ||||
|     private long workerId = 0;//为终端ID
 | ||||
|     private long dataCenterId = 1;//数据中心ID
 | ||||
|     private Snowflake snowflake = IdUtil.createSnowflake(workerId,dataCenterId); | ||||
|     @PostConstruct | ||||
|     public void init(){ | ||||
|         workerId = NetUtil.ipv4ToLong(NetUtil.getLocalhostStr()); | ||||
|     } | ||||
|     public synchronized String snowflakeId(){ | ||||
|         return String.valueOf(snowflake.nextId()); | ||||
|     } | ||||
|     public synchronized long snowflakeId(long workerId,long dataCenterId){ | ||||
|         Snowflake snowflake = IdUtil.createSnowflake(workerId, dataCenterId); | ||||
|         return snowflake.nextId(); | ||||
| 
 | ||||
|     /** | ||||
|      * 获取雪花id | ||||
|      */ | ||||
|     public static Long getId() { | ||||
|         int workId = RandomUtil.randomInt(0, 31); | ||||
|         int dataCenterId = RandomUtil.randomInt(0, 31); | ||||
|         return IdUtil.getSnowflake(workId, dataCenterId).nextId(); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
|  | ||||
					Loading…
					
					
				
		Reference in New Issue