| 
					
				 | 
			
			
				@@ -1,10 +1,15 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 package com.yonge.cooleshow.config; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.fasterxml.jackson.core.JsonGenerator; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.fasterxml.jackson.core.JsonParser; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.fasterxml.jackson.databind.BeanProperty; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.fasterxml.jackson.databind.DeserializationContext; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.fasterxml.jackson.databind.DeserializationFeature; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.fasterxml.jackson.databind.JsonDeserializer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.fasterxml.jackson.databind.JsonSerializer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.fasterxml.jackson.databind.ObjectMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.fasterxml.jackson.databind.SerializerProvider; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.fasterxml.jackson.databind.deser.ContextualDeserializer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.fasterxml.jackson.databind.module.SimpleModule; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -13,12 +18,17 @@ import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 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 com.yonge.cooleshow.common.config.EnumConverterFactory; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.toolset.base.enums.BaseEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import lombok.Data; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import lombok.EqualsAndHashCode; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.boot.autoconfigure.AutoConfigureBefore; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.context.annotation.Bean; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.context.annotation.Configuration; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.util.StringUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.io.IOException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.math.BigDecimal; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -105,6 +115,10 @@ public class JacksonConfig { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     .addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern(NORM_DATE_PATTERN))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     .addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern(NORM_TIME_PATTERN))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                     // 枚举类序列化 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .addDeserializer(Enum.class, new BaseEnumDeserializer()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .addSerializer(BaseEnum.class, new BaseEnumSerializer()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     // Long对象转String 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     //.addSerializer(Float.class, new FloatJsonSerializer()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     //.addSerializer(Float.TYPE, new FloatJsonSerializer()) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -184,4 +198,59 @@ public class JacksonConfig { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 枚举类反序列化 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @EqualsAndHashCode(callSuper = true) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public static class BaseEnumDeserializer extends JsonDeserializer<Enum<?>> implements ContextualDeserializer { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        private Class<?> target; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        @SuppressWarnings("all") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public Enum<?> deserialize(JsonParser jsonParser, DeserializationContext ctx) throws IOException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!StringUtils.hasText(jsonParser.getText())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (BaseEnum.class.isAssignableFrom(target)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return (Enum<?>) EnumConverterFactory.getEnum((Class) target, jsonParser.getText()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         * @param ctx      DeserializationContext 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         * @param property BeanProperty 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         * @return JsonDeserializer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public JsonDeserializer<?> createContextual(DeserializationContext ctx, BeanProperty property) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Class<?> rawCls = ctx.getContextualType().getRawClass(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            BaseEnumDeserializer enumDeserializer = new BaseEnumDeserializer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            enumDeserializer.setTarget(rawCls); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return enumDeserializer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 枚举类序列化 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public static class BaseEnumSerializer extends JsonSerializer<BaseEnum> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public void serialize(BaseEnum enums, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (enums.getCode() instanceof Integer) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // 返回整形 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                jsonGenerator.writeNumber(Integer.parseInt(String.valueOf(enums.getCode()))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // 返回字符串 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                jsonGenerator.writeString(String.valueOf(enums.getCode())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |