Browse Source

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java
Joburgess 4 years ago
parent
commit
4d1da2e71a

+ 9 - 18
cms/src/main/java/com/ym/mec/cms/config/WebMvcConfig.java

@@ -3,34 +3,25 @@ package com.ym.mec.cms.config;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
-import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
-import org.springframework.format.FormatterRegistry;
 import org.springframework.http.MediaType;
+import org.springframework.http.converter.HttpMessageConverter;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 
-import com.ym.mec.common.config.EnumConverterFactory;
 import com.ym.mec.common.config.LocalFastJsonHttpMessageConverter;
 
 @Configuration
 public class WebMvcConfig implements WebMvcConfigurer {
 
-	/**
-	 * 枚举类的转换器 addConverterFactory
-	 */
 	@Override
-	public void addFormatters(FormatterRegistry registry) {
-		registry.addConverterFactory(new EnumConverterFactory());
-	}
-	
-	@Bean
-    public HttpMessageConverters fastJsonHttpMessageConverters(){
+	public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
+		// 放在configureMessageConverters方法中对入参的json反序列化无影响
 		LocalFastJsonHttpMessageConverter converter = new LocalFastJsonHttpMessageConverter();
-        List<MediaType> fastMediaTypes =  new ArrayList<MediaType>();
-        fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
-        converter.setSupportedMediaTypes(fastMediaTypes);
-        return new HttpMessageConverters(converter);
-    }
+		List<MediaType> fastMediaTypes = new ArrayList<MediaType>();
+		fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
+		converter.setSupportedMediaTypes(fastMediaTypes);
+
+		converters.add(converter);
+	}
 
 }

+ 14 - 21
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/config/WebMvcConfig.java

@@ -1,34 +1,27 @@
 package com.ym.mec.auth.config;
 
-import com.ym.mec.common.config.EnumConverterFactory;
-import com.ym.mec.common.config.LocalFastJsonHttpMessageConverter;
-import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
-import org.springframework.context.annotation.Bean;
+import java.util.ArrayList;
+import java.util.List;
+
 import org.springframework.context.annotation.Configuration;
-import org.springframework.format.FormatterRegistry;
 import org.springframework.http.MediaType;
+import org.springframework.http.converter.HttpMessageConverter;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 
-import java.util.ArrayList;
-import java.util.List;
+import com.ym.mec.common.config.LocalFastJsonHttpMessageConverter;
 
 @Configuration
 public class WebMvcConfig implements WebMvcConfigurer {
 
-	/**
-	 * 枚举类的转换器 addConverterFactory
-	 */
+
 	@Override
-	public void addFormatters(FormatterRegistry registry) {
-		registry.addConverterFactory(new EnumConverterFactory());
-	}
-	
-	@Bean
-    public HttpMessageConverters fastJsonHttpMessageConverters(){
+	public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
+		// 放在configureMessageConverters方法中对入参的json反序列化无影响
 		LocalFastJsonHttpMessageConverter converter = new LocalFastJsonHttpMessageConverter();
-        List<MediaType> fastMediaTypes =  new ArrayList<MediaType>();
-        fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
-        converter.setSupportedMediaTypes(fastMediaTypes);
-        return new HttpMessageConverters(converter);
-    }
+		List<MediaType> fastMediaTypes = new ArrayList<MediaType>();
+		fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
+		converter.setSupportedMediaTypes(fastMediaTypes);
+
+		converters.add(converter);
+	}
 }

+ 3 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java

@@ -141,7 +141,7 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
                                                    @Param("userId") Integer userId);
 
     int deleteMusicGroupCourseSchedulesWithStudents(@Param("courseScheduleIds") List<Long> courseScheduleIds,
-                                                   @Param("userIds") List<Integer> userIds);
+                                                    @Param("userIds") List<Integer> userIds);
 
     /**
      * @describe 获取班级上未开始的课程
@@ -152,6 +152,7 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      */
     List<CourseSchedule> getClassGroupNotStartCourse(@Param("classGroupId") Long classGroupId);
 
+
     /**
      * @param teacherId: 教师编号
      * @param classDate: 上课日期
@@ -1596,6 +1597,7 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      */
     List<RemainCourseTypeDurationDto> queryRemainCourseTypeDuration(String classGroupIdList);
 
+
     /**
      * @describe 获取检测课程冲突需要的数据
      * @author qnc99

+ 27 - 0
mec-common/common-core/src/main/java/com/ym/mec/common/config/FeignConfiguration.java

@@ -1,10 +1,16 @@
 package com.ym.mec.common.config;
 
+import org.springframework.beans.factory.ObjectFactory;
+import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
+import org.springframework.cloud.openfeign.support.SpringDecoder;
+import org.springframework.cloud.openfeign.support.SpringEncoder;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
 import feign.Logger;
 import feign.RequestInterceptor;
+import feign.codec.Decoder;
+import feign.codec.Encoder;
 
 @Configuration
 public class FeignConfiguration {
@@ -19,4 +25,25 @@ public class FeignConfiguration {
 	public RequestInterceptor requestInterceptor(){
 		return new RequestHeaderConfiguration();
 	}
+	
+	@Bean
+	public Decoder feignDecoder() {
+		return new SpringDecoder(feignHttpMessageConverter());
+	}
+
+	@Bean
+	public Encoder feignEncoder() {
+		return new SpringEncoder(feignHttpMessageConverter());
+	}
+	
+	/**
+     * 设置解码器为fastjson
+     *
+     * @return
+     */
+    private ObjectFactory<HttpMessageConverters> feignHttpMessageConverter() {
+        final HttpMessageConverters httpMessageConverters = new HttpMessageConverters(new LocalFastJsonHttpMessageConverter());
+        return () -> httpMessageConverters;
+    }
+
 }

+ 64 - 6
mec-common/common-core/src/main/java/com/ym/mec/common/config/LocalFastJsonHttpMessageConverter.java

@@ -6,12 +6,18 @@ import java.lang.reflect.Type;
 import java.math.BigDecimal;
 import java.util.Date;
 
+import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.http.HttpInputMessage;
 import org.springframework.http.HttpOutputMessage;
 import org.springframework.http.converter.HttpMessageNotReadableException;
 import org.springframework.http.converter.HttpMessageNotWritableException;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.parser.DefaultJSONParser;
+import com.alibaba.fastjson.parser.JSONToken;
+import com.alibaba.fastjson.parser.ParserConfig;
+import com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;
 import com.alibaba.fastjson.serializer.JSONSerializer;
 import com.alibaba.fastjson.serializer.ObjectSerializer;
 import com.alibaba.fastjson.serializer.SimpleDateFormatSerializer;
@@ -27,7 +33,12 @@ public class LocalFastJsonHttpMessageConverter extends FastJsonHttpMessageConver
 
 	@Override
 	protected Object readInternal(Class<? extends Object> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException {
-		return super.readInternal(clazz, inputMessage);
+		return read(clazz, null, inputMessage);
+	}
+
+	@Override
+	public Object read(Type type, Class<?> contextClass, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException {
+		return JSON.parseObject(IOUtils.toString(inputMessage.getBody()), type, CustmerParserConfig.global, getFastJsonConfig().getFeatures());
 	}
 
 	@Override
@@ -35,20 +46,49 @@ public class LocalFastJsonHttpMessageConverter extends FastJsonHttpMessageConver
 
 		OutputStream out = outputMessage.getBody();
 		JsonUtil.getConfig().put(Date.class, new SimpleDateFormatSerializer(FORMAT));
-		//JsonUtil.getConfig().put(String.class, new EmojiSerializer());
-		String text = JsonUtil.toJSONString(obj, EnumFilter.instance, getFeatures());
-		byte[] bytes = text.getBytes(getCharset());
+		// JsonUtil.getConfig().put(String.class, new EmojiSerializer());
+		String text = JsonUtil.toJSONString(obj, EnumFilter.instance, getFastJsonConfig().getSerializerFeatures());
+		byte[] bytes = text.getBytes(getFastJsonConfig().getCharset());
 		out.write(bytes);
 	}
 }
 
-class EmojiSerializer implements ObjectSerializer{
+class EmojiSerializer implements ObjectSerializer {
 
 	@Override
 	public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {
 		serializer.write(EmojiParser.parseToUnicode(object.toString()));
 	}
-	
+
+}
+
+class CustmerEnumDeserializer implements ObjectDeserializer {
+
+	@Override
+	public BaseEnum deserialze(DefaultJSONParser parser, Type type, Object fieldName) {
+		Object value = parser.parse();
+		Class clazz = (Class) type;
+
+		for (Object en : clazz.getEnumConstants()) {
+			BaseEnum be = (BaseEnum) en;
+			if (be.getCode() instanceof Integer) {
+				if ((Integer) be.getCode() == Integer.parseInt(value.toString())) {
+					return be;
+				}
+			} else {
+				if (value.equals(String.valueOf(be.getCode()))) {
+					return be;
+				}
+			}
+		}
+		return null;
+	}
+
+	@Override
+	public int getFastMatchToken() {
+		return JSONToken.LITERAL_INT;
+	}
+
 }
 
 class EnumFilter implements ValueFilter {
@@ -72,3 +112,21 @@ class EnumFilter implements ValueFilter {
 		return value;
 	}
 }
+
+class CustmerParserConfig extends ParserConfig {
+	
+	public static CustmerParserConfig global = new CustmerParserConfig();
+
+	@Override
+	public ObjectDeserializer getDeserializer(Class<?> clazz, Type type) {
+		ObjectDeserializer derializer = getDeserializers().get(type);
+		if (derializer != null) {
+			return derializer;
+		}
+		if (BaseEnum.class.isAssignableFrom(clazz)) {
+			putDeserializer(type, new CustmerEnumDeserializer());
+		}
+		return super.getDeserializer(clazz, type);
+	}
+
+}

+ 14 - 92
mec-im/src/main/java/com/ym/config/WebMvcConfig.java

@@ -1,106 +1,28 @@
 package com.ym.config;
 
-import java.io.IOException;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.time.LocalTime;
-import java.time.format.DateTimeFormatter;
-import java.util.Date;
+import java.util.ArrayList;
+import java.util.List;
 
-import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Primary;
-import org.springframework.format.FormatterRegistry;
+import org.springframework.http.MediaType;
+import org.springframework.http.converter.HttpMessageConverter;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 
-import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.core.JsonProcessingException;
-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.SerializationFeature;
-import com.fasterxml.jackson.databind.SerializerProvider;
-import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
-import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
-import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
-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.ym.mec.common.config.EnumConverterFactory;
-import com.ym.mec.common.enums.BaseEnum;
+import com.ym.mec.common.config.LocalFastJsonHttpMessageConverter;
 
 @Configuration
 public class WebMvcConfig implements WebMvcConfigurer {
 
-	/**
-	 * 枚举类的转换器 addConverterFactory
-	 */
-	@Override
-	public void addFormatters(FormatterRegistry registry) {
-		registry.addConverterFactory(new EnumConverterFactory());
-	}
-
-	@SuppressWarnings("rawtypes")
-	@Bean
-	@Primary
-	public ObjectMapper ObjectMapper() {
-		ObjectMapper objectMapper = new ObjectMapper();
-		// 对于空的对象转json的时候不抛出错误
-		objectMapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
-		// 禁用遇到未知属性抛出异常
-		objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
-		// 序列化BigDecimal时不使用科学计数法输出
-		objectMapper.configure(JsonGenerator.Feature.WRITE_BIGDECIMAL_AS_PLAIN, true);
-		// 日期和时间格式化
-		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")));
-		javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
-		javaTimeModule.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
-		javaTimeModule.addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern("HH:mm:ss")));
-
-		// BaseEnum序列化
-		javaTimeModule.addSerializer(BaseEnum.class, new JsonSerializer<BaseEnum>() {
-
-			@Override
-			public void serialize(BaseEnum enumObj, JsonGenerator jsonGenerator, SerializerProvider serializers) throws IOException {
-				jsonGenerator.writeString(enumObj.getCode().toString());
-			}
 
-		});
-
-		// Date序列化和反序列化
-		javaTimeModule.addSerializer(Date.class, new JsonSerializer<Date>() {
-			@Override
-			public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
-				SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-				String formattedDate = formatter.format(date);
-				jsonGenerator.writeString(formattedDate);
-			}
-		});
-
-		javaTimeModule.addDeserializer(Date.class, new JsonDeserializer<Date>() {
-			@Override
-			public Date deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
-				SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-				String date = jsonParser.getText();
-				try {
-					return format.parse(date);
-				} catch (ParseException e) {
-					throw new RuntimeException(e);
-				}
-			}
-		});
-
-		objectMapper.registerModule(javaTimeModule);
-		return objectMapper;
+	@Override
+	public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
+		// 放在configureMessageConverters方法中对入参的json反序列化无影响
+		LocalFastJsonHttpMessageConverter converter = new LocalFastJsonHttpMessageConverter();
+		List<MediaType> fastMediaTypes = new ArrayList<MediaType>();
+		fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
+		converter.setSupportedMediaTypes(fastMediaTypes);
+
+		converters.add(converter);
 	}
 
 }

+ 10 - 21
mec-im/src/main/java/com/ym/mec/im/message/ExamSongDownloadMessageMessage.java

@@ -1,37 +1,26 @@
 package com.ym.mec.im.message;
 
 import com.ym.mec.im.BaseMessage;
+import com.ym.pojo.ExamSongMessage;
+import org.apache.commons.lang3.StringUtils;
 
 public class ExamSongDownloadMessageMessage extends BaseMessage {
-    private String url;
-    private String songName;
+    private ExamSongMessage content;
     private static final transient String TYPE = "DY:examSongDownloadMessage";
 
-    public String getUrl() {
-        return url;
+    public ExamSongMessage getContent() {
+        return content;
     }
 
-    public void setUrl(String url) {
-        this.url = url;
-    }
-
-    public String getSongName() {
-        return songName;
-    }
-
-    public void setSongName(String songName) {
-        this.songName = songName;
-    }
-
-    public static String getTYPE() {
-        return TYPE;
+    public void setContent(ExamSongMessage content) {
+        this.content = content;
     }
 
     @Override
     public String toString() {
-        return "{" +
-                "url='" + url + '\'' +
-                ", songName='" + songName + '\'' +
+        return "{\"url\":" + content.getUrl() +
+                ", \"songName\":" + content.getSongName() +
+                ", \"songId\":" + content.getSongId() +
                 '}';
     }
 

+ 47 - 0
mec-im/src/main/java/com/ym/pojo/ExamSongMessage.java

@@ -0,0 +1,47 @@
+package com.ym.pojo;
+
+import io.rong.messages.BaseMessage;
+import org.apache.commons.lang3.StringUtils;
+
+public class ExamSongMessage extends BaseMessage {
+    private String url;
+    private String songName;
+    private Integer songId;
+
+    public Integer getSongId() {
+        return songId;
+    }
+
+    public void setSongId(Integer songId) {
+        this.songId = songId;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    public String getSongName() {
+        return songName;
+    }
+
+    public void setSongName(String songName) {
+        this.songName = songName;
+    }
+
+    @Override
+    public String getType() {
+        return "DY:examSongDownloadMessage";
+    }
+
+    @Override
+    public String toString() {
+        return "{\"url\":" + url +
+                ", \"songName\":" + songName +
+                ", \"songId\":" + songId +
+                '}';
+    }
+}

+ 6 - 3
mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

@@ -1289,9 +1289,12 @@ public class RoomServiceImpl implements RoomService {
         if(sysExamSong == null){
             throw new BizException("曲目信息不存在");
         }
-        msg.setSongName(sysExamSong.getName());
-        msg.setUrl(sysExamSong.getUrl());
-        imHelper.publishMessage(authUser.getId().toString(), roomId, msg, 1);
+        ExamSongMessage examSongMessage = new ExamSongMessage();
+        examSongMessage.setSongName(sysExamSong.getName());
+        examSongMessage.setUrl(sysExamSong.getUrl());
+        examSongMessage.setSongId(examSongId);
+        msg.setContent(examSongMessage);
+        imHelper.publishMessage(authUser.getId().toString(), roomId, msg, 0);
         //学员曲目下载状态改为未下载
         ExamSongDownloadData json = new ExamSongDownloadData();
         json.setSongName(sysExamSong.getName());

+ 6 - 15
mec-student/src/main/java/com/ym/mec/student/config/WebMvcConfig.java

@@ -4,15 +4,12 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
-import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
-import org.springframework.format.FormatterRegistry;
 import org.springframework.http.MediaType;
+import org.springframework.http.converter.HttpMessageConverter;
 import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 
-import com.ym.mec.common.config.EnumConverterFactory;
 import com.ym.mec.common.config.LocalFastJsonHttpMessageConverter;
 import com.ym.mec.student.interceptor.MDCInterceptor;
 
@@ -22,14 +19,6 @@ public class WebMvcConfig implements WebMvcConfigurer {
 	@Autowired
 	private MDCInterceptor mdcInterceptor;
 
-	/**
-	 * 枚举类的转换器 addConverterFactory
-	 */
-	@Override
-	public void addFormatters(FormatterRegistry registry) {
-		registry.addConverterFactory(new EnumConverterFactory());
-	}
-
 	@Override
 	public void addInterceptors(InterceptorRegistry registry) {
 		// addPathPatterns 用于添加拦截规则, 这里假设拦截 /url 后面的全部链接
@@ -43,13 +32,15 @@ public class WebMvcConfig implements WebMvcConfigurer {
 		registry.addInterceptor(mdcInterceptor).addPathPatterns(includePathPatterns).excludePathPatterns(excludePathPatterns);
 	}
 
-	@Bean
-	public HttpMessageConverters fastJsonHttpMessageConverters() {
+	@Override
+	public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
+		// 放在configureMessageConverters方法中对入参的json反序列化无影响
 		LocalFastJsonHttpMessageConverter converter = new LocalFastJsonHttpMessageConverter();
 		List<MediaType> fastMediaTypes = new ArrayList<MediaType>();
 		fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
 		converter.setSupportedMediaTypes(fastMediaTypes);
-		return new HttpMessageConverters(converter);
+
+		converters.add(converter);
 	}
 
 }

+ 10 - 18
mec-task/src/main/java/com/ym/mec/task/config/WebMvcConfig.java

@@ -3,34 +3,26 @@ package com.ym.mec.task.config;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
-import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
-import org.springframework.format.FormatterRegistry;
 import org.springframework.http.MediaType;
+import org.springframework.http.converter.HttpMessageConverter;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 
-import com.ym.mec.common.config.EnumConverterFactory;
 import com.ym.mec.common.config.LocalFastJsonHttpMessageConverter;
 
 @Configuration
 public class WebMvcConfig implements WebMvcConfigurer {
 
-	/**
-	 * 枚举类的转换器 addConverterFactory
-	 */
+
 	@Override
-	public void addFormatters(FormatterRegistry registry) {
-		registry.addConverterFactory(new EnumConverterFactory());
-	}
-	
-	@Bean
-    public HttpMessageConverters fastJsonHttpMessageConverters(){
+	public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
+		// 放在configureMessageConverters方法中对入参的json反序列化无影响
 		LocalFastJsonHttpMessageConverter converter = new LocalFastJsonHttpMessageConverter();
-        List<MediaType> fastMediaTypes =  new ArrayList<MediaType>();
-        fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
-        converter.setSupportedMediaTypes(fastMediaTypes);
-        return new HttpMessageConverters(converter);
-    }
+		List<MediaType> fastMediaTypes = new ArrayList<MediaType>();
+		fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
+		converter.setSupportedMediaTypes(fastMediaTypes);
+
+		converters.add(converter);
+	}
 
 }

+ 11 - 46
mec-teacher/src/main/java/com/ym/mec/teacher/config/WebMvcConfig.java

@@ -1,47 +1,17 @@
 package com.ym.mec.teacher.config;
 
-import java.io.IOException;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.time.LocalTime;
-import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
-import java.util.Date;
 import java.util.List;
 
-import com.ym.mec.teacher.interceptor.MDCInterceptor;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
-import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Primary;
-import org.springframework.format.FormatterRegistry;
 import org.springframework.http.MediaType;
+import org.springframework.http.converter.HttpMessageConverter;
 import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 
-import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.core.JsonProcessingException;
-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.SerializationFeature;
-import com.fasterxml.jackson.databind.SerializerProvider;
-import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
-import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
-import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
-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.ym.mec.common.config.EnumConverterFactory;
 import com.ym.mec.common.config.LocalFastJsonHttpMessageConverter;
-import com.ym.mec.common.enums.BaseEnum;
+import com.ym.mec.teacher.interceptor.MDCInterceptor;
 
 @Configuration
 public class WebMvcConfig implements WebMvcConfigurer {
@@ -58,21 +28,16 @@ public class WebMvcConfig implements WebMvcConfigurer {
 		registry.addInterceptor(mdcInterceptor).addPathPatterns(includePathPatterns).excludePathPatterns(excludePathPatterns);
 	}
 
-	/**
-	 * 枚举类的转换器 addConverterFactory
-	 */
+
 	@Override
-	public void addFormatters(FormatterRegistry registry) {
-		registry.addConverterFactory(new EnumConverterFactory());
-	}
-	
-	@Bean
-    public HttpMessageConverters fastJsonHttpMessageConverters(){
+	public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
+		// 放在configureMessageConverters方法中对入参的json反序列化无影响
 		LocalFastJsonHttpMessageConverter converter = new LocalFastJsonHttpMessageConverter();
-        List<MediaType> fastMediaTypes =  new ArrayList<MediaType>();
-        fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
-        converter.setSupportedMediaTypes(fastMediaTypes);
-        return new HttpMessageConverters(converter);
-    }
+		List<MediaType> fastMediaTypes = new ArrayList<MediaType>();
+		fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
+		converter.setSupportedMediaTypes(fastMediaTypes);
+
+		converters.add(converter);
+	}
 
 }

+ 9 - 18
mec-web/src/main/java/com/ym/mec/web/config/WebMvcConfig.java

@@ -3,34 +3,25 @@ package com.ym.mec.web.config;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
-import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
-import org.springframework.format.FormatterRegistry;
 import org.springframework.http.MediaType;
+import org.springframework.http.converter.HttpMessageConverter;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 
-import com.ym.mec.common.config.EnumConverterFactory;
 import com.ym.mec.common.config.LocalFastJsonHttpMessageConverter;
 
 @Configuration
 public class WebMvcConfig implements WebMvcConfigurer {
 
-	/**
-	 * 枚举类的转换器 addConverterFactory
-	 */
 	@Override
-	public void addFormatters(FormatterRegistry registry) {
-		registry.addConverterFactory(new EnumConverterFactory());
-	}
-	
-	@Bean
-    public HttpMessageConverters fastJsonHttpMessageConverters(){
+	public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
+		// 放在configureMessageConverters方法中对入参的json反序列化无影响
 		LocalFastJsonHttpMessageConverter converter = new LocalFastJsonHttpMessageConverter();
-        List<MediaType> fastMediaTypes =  new ArrayList<MediaType>();
-        fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
-        converter.setSupportedMediaTypes(fastMediaTypes);
-        return new HttpMessageConverters(converter);
-    }
+		List<MediaType> fastMediaTypes = new ArrayList<MediaType>();
+		fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
+		converter.setSupportedMediaTypes(fastMediaTypes);
+
+		converters.add(converter);
+	}
 
 }