package com.ibeetl.admin.core.conf; import org.beetl.core.Context; import org.beetl.core.Function; import org.beetl.core.GroupTemplate; import org.beetl.ext.spring.BeetlGroupUtilConfiguration; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.Environment; import org.springframework.format.FormatterRegistry; import org.springframework.format.datetime.DateFormatter; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.validation.MessageCodesResolver; import org.springframework.validation.Validator; import org.springframework.web.method.support.HandlerMethodArgumentResolver; import org.springframework.web.method.support.HandlerMethodReturnValueHandler; import org.springframework.web.servlet.HandlerExceptionResolver; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.config.annotation.*; import com.ibeetl.admin.core.entity.CoreOrg; import com.ibeetl.admin.core.entity.CoreUser; import com.ibeetl.admin.core.service.CorePlatformService; import com.ibeetl.admin.core.service.CoreUserService; import com.ibeetl.admin.core.util.HttpRequestLocal; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.HashMap; import java.util.List; import java.util.Map; @Configuration public class MVCConf implements WebMvcConfigurer, InitializingBean { public static final String DEFAULT_APP_NAME = "开发平台"; /** * 系统名称,可以在application.properties中配置 * app.name=xxx */ // @Value("${app.name}") // String appName; // 开发用的模拟当前用户和机构 Long useId; Long orgId; String mvcTestPath; @Autowired Environment env; @Autowired CoreUserService userService; @Autowired BeetlGroupUtilConfiguration beetlGroupUtilConfiguration; @Autowired HttpRequestLocal httpRequestLocal; @Autowired GroupTemplate groupTemplate; @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new SessionInterceptor(httpRequestLocal, this)).addPathPatterns("/**"); // super.addInterceptors(registry); } @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("*") .allowCredentials(true) .allowedMethods("GET", "POST", "DELETE", "PUT","PATCH") .maxAge(3600);; } @Override public void addFormatters(FormatterRegistry registry) { registry.addFormatter(new DateFormatter("yyyy-MM-dd HH:mm:ss")); registry.addFormatter(new DateFormatter("yyyy-MM-dd")); } @Override public void afterPropertiesSet() throws Exception { this.useId = env.getProperty("user.id", Long.class); this.orgId = env.getProperty("user.orgId", Long.class); this.mvcTestPath = env.getProperty("mvc.test.path"); Map var = new HashMap<>(5); String appName = env.getProperty("app.name"); if(appName==null) { var.put("appName",DEFAULT_APP_NAME); } var.put("jsVer", System.currentTimeMillis()); groupTemplate.setSharedVars(var); } } class SessionInterceptor implements HandlerInterceptor { MVCConf conf; HttpRequestLocal httpRequestLocal; public SessionInterceptor(HttpRequestLocal httpRequestLocal, MVCConf conf) { this.conf = conf; this.httpRequestLocal = httpRequestLocal; } @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { /*if (conf.useId != null && conf.orgId != null && request.getSession().getAttribute(CorePlatformService.ACCESS_CURRENT_USER) == null) { // 模拟用户登录,用于快速开发,未来用rember么代替? CoreUser user = conf.userService.getUserById(conf.useId); CoreOrg org = conf.userService.getOrgById(conf.orgId); List orgs = conf.userService.getUserOrg(conf.useId, org.getId()); request.getSession().setAttribute(CorePlatformService.ACCESS_CURRENT_USER, user); request.getSession().setAttribute(CorePlatformService.ACCESS_CURRENT_ORG, org); request.getSession().setAttribute(CorePlatformService.ACCESS_USER_ORGS, orgs); request.getSession().setAttribute("ip", request.getRemoteHost()); }*/ httpRequestLocal.set(request); return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { // do nothing } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { // do nothing } }