diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/common/interceptor/RequestHeaderContextInterceptor.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/common/interceptor/RequestHeaderContextInterceptor.java index 3412d83fb..346494456 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/common/interceptor/RequestHeaderContextInterceptor.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/common/interceptor/RequestHeaderContextInterceptor.java @@ -1,18 +1,24 @@ package cn.axzo.workflow.server.common.interceptor; +import cn.axzo.workflow.core.common.exception.WorkflowEngineException; import cn.axzo.workflow.core.repository.entity.ExtAxProperty; import cn.axzo.workflow.core.service.ExtAxPropertyService; import lombok.extern.slf4j.Slf4j; import org.apache.maven.artifact.versioning.DefaultArtifactVersion; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import org.springframework.util.StringUtils; import org.springframework.web.servlet.HandlerInterceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Objects; +import static cn.axzo.workflow.client.config.FeignRequestInterceptor.HEADER_API_VERSION; +import static cn.axzo.workflow.client.config.FeignRequestInterceptor.HEADER_HTTP_CLIENT; +import static cn.axzo.workflow.client.config.FeignRequestInterceptor.HEADER_HTTP_CLIENT_VALUE; import static cn.axzo.workflow.client.config.FeignRequestInterceptor.HEADER_SERVER_NAME; +import static cn.axzo.workflow.core.common.code.OtherRespCode.CLIENT_VERSION_SUPPORT; /** * 客户端与服务端的版本比较 @@ -30,24 +36,26 @@ public class RequestHeaderContextInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { - log.info("request uri : {}", request.getRequestURI()); - // if (Objects.equals(HEADER_HTTP_CLIENT_VALUE, request.getHeader(HEADER_HTTP_CLIENT))) { - // String headerClientVersion = request.getHeader(HEADER_API_VERSION); - // DefaultArtifactVersion clientVersion = new DefaultArtifactVersion(headerClientVersion); - // DefaultArtifactVersion serverVersion = new DefaultArtifactVersion(serviceVersion); - // if (clientVersion.compareTo(serverVersion) >= 0) { - // - // recordClientInfo(request, headerClientVersion, clientVersion); - // - // return true; - // } else { - // throw new WorkflowEngineException(CLIENT_VERSION_SUPPORT, serviceVersion); - // } - // } - // if (!request.getRequestURI().contains("/web/") && !request.getRequestURI().contains("checkDeath") - // && !StringUtils.hasText(request.getHeader(HEADER_HTTP_CLIENT))) { - // throw new WorkflowEngineException(CLIENT_VERSION_SUPPORT, serviceVersion); - // } + if (Objects.equals(HEADER_HTTP_CLIENT_VALUE, request.getHeader(HEADER_HTTP_CLIENT))) { + String headerClientVersion = request.getHeader(HEADER_API_VERSION); + DefaultArtifactVersion clientVersion = new DefaultArtifactVersion(headerClientVersion); + DefaultArtifactVersion serverVersion = new DefaultArtifactVersion(serviceVersion); + if (clientVersion.compareTo(serverVersion) >= 0) { + + recordClientInfo(request, headerClientVersion, clientVersion); + + return true; + } else { + log.info("request uri : {}", request.getRequestURI()); + throw new WorkflowEngineException(CLIENT_VERSION_SUPPORT, serviceVersion); + } + } + // 仅 feignApi 才需要检查版本 + if (!request.getRequestURI().contains("/web/") && !request.getRequestURI().contains("checkDeath") + && !StringUtils.hasText(request.getHeader(HEADER_HTTP_CLIENT))) { + log.info("request uri : {}", request.getRequestURI()); + throw new WorkflowEngineException(CLIENT_VERSION_SUPPORT, serviceVersion); + } return true; }