package cn.com.goldenwater.dcproj.config; import cn.com.goldenwater.dcproj.constValue.CommonLabel; import cn.com.goldenwater.dcproj.intercepter.*; import cn.com.goldenwater.dcproj.service.impl.RedisDataCenterReceiver; import cn.com.goldenwater.dcproj.service.impl.system.RedisReceiver; import cn.com.goldenwater.util.common.IPUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.listener.PatternTopic; import org.springframework.data.redis.listener.RedisMessageListenerContainer; import org.springframework.data.redis.listener.adapter.MessageListenerAdapter; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; @Configuration public class WebMvcConfiguration extends WebMvcConfigurerAdapter { @Value("${web.upload-path}") public String fileDir; @Value("${getFile.prefix}") public String prefix; @Value("${intercept.enable}") public Boolean enterceptEnable; @Autowired private PdfHeaderInterceptor pdfHeaderInterceptor; @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler(prefix + "**").addResourceLocations("file:" + fileDir); registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/"); registry.addResourceHandler("**/upload/**").addResourceLocations("classpath:**/upload/"); registry.addResourceHandler("**/file/**").addResourceLocations("classpath:**/file/"); super.addResourceHandlers(registry); } /** * 注册拦截器 */ @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(getCorsInterceptor()).addPathPatterns("/**"); registry.addInterceptor(getFileCheckInterceptor()).addPathPatterns("/**"); registry.addInterceptor(pdfHeaderInterceptor); // registry.addInterceptor(getCorsInterceptor()).addPathPatterns("/druid/**"); // registry.addInterceptor(getPathVariableInterceptor()).addPathPatterns("/bis/insp/loginByCode/**","/bis/insp/sendMessage/**"); if (enterceptEnable) { //注册自定义拦截器,添加拦截路径和排除拦截路径 registry.addInterceptor(getLogInterceptor()).addPathPatterns("/**") .excludePathPatterns("/wx/call/back/**", "/upload/**", "/version/**", "/bis/insp/loginByCode/**", "/bis/insp/loginByPwd/**", "/bis/insp/getTokenByTel/**", "/bis/insp/logOut/**", "/bis/insp/sendMessage/**", "/bis/insp/getCaptchaImage/**", "/refresh/task" , "/qrcode/login/**", "/bis/login/quanguo/**", "/version/download/**", "/dc/gd/base/download/**", "/QRCode/**", "/file/changeSmallImg", "/bis/insp/getUserInfo", "/bis/insp/task/dth/day/pblmListOfAll" , "/page/grw/doc", "/att/meeting/**", "/page/keyReg/doc", "/page/waga/doc", "/page/vill/doc", "/page/track/doc", "/page/rever/doc" , "/dc/impExcel/**", "/bis/insp/test/**", "/dc/imp/pblm/**", "/auth/refresh", "/meet/**", "/page/sd/doc", "/page/pblm/doc", "/att/rtu/base/**" , "/supervision/plan/dowmTemplate/**", "/dc/wash/**", "/tac/insp/year/batch/group/pers/**", "/bis/insp/off/line/uploadOffLine/*", "/tac/worker/b/insertIntoData/**", "/tac/worker/b/downTemplateExcel", "/webService/**", "/sso/**", "/ssoValidate/**", "/ding/**", "/Synchronize/**", "/statistics/**", "/cas/sd/**", "/cas/fj/**", "/cas/sdt/**","/cas/hn/**", "/cas/cd/**","/cas/hblx/**"); //全局拦截 // registry.addInterceptor(getPathInterceptor()).addPathPatterns("/**").excludePathPatterns("/dc/insp/rsvrRgstr/list/**"); } super.addInterceptors(registry); } @Bean public CorsInterceptor getCorsInterceptor() { return new CorsInterceptor(); } @Bean public PathVariableInterceptor getPathVariableInterceptor() { return new PathVariableInterceptor(); } @Bean public PathInterceptor getPathInterceptor() { return new PathInterceptor(); } @Bean public LogInterceptor getLogInterceptor() { return new LogInterceptor(); } @Bean public FileCheckInterceptor getFileCheckInterceptor() { return new FileCheckInterceptor(); } @Value("${spring.redis.port}") private int port; @Value("${spring.redis.host}") private String hostName; @Bean RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory, MessageListenerAdapter listenerAdapter, MessageListenerAdapter listenerAdapter1, MessageListenerAdapter listenerAdapter2, MessageListenerAdapter listenerAdapterStart, MessageListenerAdapter listenerAdapterRun, MessageListenerAdapter listenerAdaptWeiXian) { RedisMessageListenerContainer container = new RedisMessageListenerContainer(); container.setConnectionFactory(connectionFactory); container.addMessageListener(listenerAdapter, new PatternTopic(CommonLabel.channel)); container.addMessageListener(listenerAdapter1, new PatternTopic(CommonLabel.SEND_TO_CENTER)); container.addMessageListener(listenerAdapter2, new PatternTopic(CommonLabel.SEND_TO_UPDATE)); container.addMessageListener(listenerAdapterStart, new PatternTopic(CommonLabel.SEND_TO_START)); container.addMessageListener(listenerAdapterRun, new PatternTopic(CommonLabel.SEND_TO_RUN)); container.addMessageListener(listenerAdaptWeiXian, new PatternTopic(CommonLabel.SEND_TO_WEI_XIN)); return container; } @Bean MessageListenerAdapter listenerAdapter1(RedisDataCenterReceiver redisLoginReceiver) { return new MessageListenerAdapter(redisLoginReceiver, "receiveMessage"); } @Bean MessageListenerAdapter listenerAdapter2(RedisDataCenterReceiver redisLoginReceiver) { return new MessageListenerAdapter(redisLoginReceiver, "receiveMessageUpdate"); } @Bean MessageListenerAdapter listenerAdapterStart(RedisDataCenterReceiver redisLoginReceiver) { return new MessageListenerAdapter(redisLoginReceiver, "receiveMessageStart"); } @Bean MessageListenerAdapter listenerAdapterRun(RedisDataCenterReceiver redisLoginReceiver) { return new MessageListenerAdapter(redisLoginReceiver, "receiveMessageRun"); } @Bean MessageListenerAdapter listenerAdapter(RedisReceiver redisReceiver) { return new MessageListenerAdapter(redisReceiver, "receiveMessage"); } @Bean MessageListenerAdapter listenerAdaptWeiXian(RedisDataCenterReceiver redisLoginReceiver) { return new MessageListenerAdapter(redisLoginReceiver, "receiveMessageWeiXin"); } @Bean("redisTemplate") public RedisTemplate redisTemplate(RedisConnectionFactory connectionFactory) { return IPUtils.getRedisTemplate(connectionFactory); } }