diff --git a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/TerminalInfo.java b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/TerminalInfo.java index 0c48cc3..26c31f9 100644 --- a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/TerminalInfo.java +++ b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/TerminalInfo.java @@ -1,5 +1,6 @@ package cn.axzo.framework.auth.domain; +import cn.hutool.core.collection.CollectionUtil; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; @@ -7,8 +8,7 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; - -import cn.hutool.core.collection.CollectionUtil; +import org.springframework.util.StringUtils; /** @@ -268,6 +268,51 @@ public class TerminalInfo { aliasMap.put(STR_TERMINAL_SCREEN, NT_SCREEN); } + /** + * 交易业务投标 + */ + public static final String NT_BID_WEB_LEADER = "NT_BID_WEB_LEADER"; + static { + aliasMap.put(NT_BID_WEB_LEADER , NT_BID_WEB_LEADER ); + } + + /** + * 交易业务招标 + */ + public static final String NT_BID_WEB_ENT = "NT_BID_WEB_ENT"; + static { + aliasMap.put(NT_BID_WEB_ENT, NT_BID_WEB_ENT); + } + + /** + * 是否是招投标 + * @return + */ + public boolean isBID_WEB() { + if (!StringUtils.hasText(newTerminalString)) { + return false; + } + return newTerminalString.startsWith("NT_BID_WEB_"); + } + + /** + * 是否是投标 + * @return + */ + public boolean isBID_WEB_LEADER() { + return NT_BID_WEB_LEADER .equals(newTerminalString); + } + + /** + * 是否是招标 + * @return + */ + public boolean isBID_WEB_ENT() { + return NT_BID_WEB_ENT.equals(newTerminalString); + } + + + static { for (Entry entry : aliasMap.entrySet()) { String nt = entry.getValue(); @@ -342,6 +387,7 @@ public class TerminalInfo { } + public boolean isOMS_WEB() { return NT_OMS_WEB.equals(newTerminalString); } diff --git a/axzo-common/src/main/java/cn/azxo/framework/common/annotation/OnlyPodsEnvironment.java b/axzo-common/src/main/java/cn/azxo/framework/common/annotation/OnlyPodsEnvironment.java new file mode 100644 index 0000000..3a82f26 --- /dev/null +++ b/axzo-common/src/main/java/cn/azxo/framework/common/annotation/OnlyPodsEnvironment.java @@ -0,0 +1,29 @@ +package cn.azxo.framework.common.annotation; + +import cn.azxo.framework.common.spring.condition.PodsEnvironmentCondition; +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; +import org.springframework.context.annotation.Conditional; + +/** + * 只对容器环境生效。可用于区分本地开发环境和容器环境(rancher metadata.namespace) + * + * @author xiajiafu + * @since 2022/8/17 + */ +@Target({ElementType.METHOD, ElementType.TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +@Conditional(PodsEnvironmentCondition.class) +public @interface OnlyPodsEnvironment { + + /** + * 对指定容器命名空间(rancher metadata.namespace)生效,默认对所有命名空间生效。 + *

optional value: java-dev/test/test1/pre/uat/pro + */ + String[] value() default ""; + +} \ No newline at end of file diff --git a/axzo-common/src/main/java/cn/azxo/framework/common/spring/condition/PodsEnvironmentCondition.java b/axzo-common/src/main/java/cn/azxo/framework/common/spring/condition/PodsEnvironmentCondition.java new file mode 100644 index 0000000..9fd12f6 --- /dev/null +++ b/axzo-common/src/main/java/cn/azxo/framework/common/spring/condition/PodsEnvironmentCondition.java @@ -0,0 +1,39 @@ +package cn.azxo.framework.common.spring.condition; + +import cn.azxo.framework.common.annotation.OnlyPodsEnvironment; +import java.util.Arrays; +import java.util.Map; +import org.springframework.context.annotation.Condition; +import org.springframework.context.annotation.ConditionContext; +import org.springframework.core.type.AnnotatedTypeMetadata; +import org.springframework.util.MultiValueMap; + +/** + * 判断当前环境是否是容器环境 + * + * @author xiajiafu + * @since 2022/8/17 + */ +public class PodsEnvironmentCondition implements Condition { + + @Override + public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) { + Map env = System.getenv(); + if (env != null) { + String podNamespace = env.get("MY_POD_NAMESPACE"); + // 为空说明非容器环境 + if (podNamespace == null || "".equals(podNamespace)) { + return false; + } + MultiValueMap attrs = metadata.getAllAnnotationAttributes(OnlyPodsEnvironment.class.getName()); + if (attrs != null) { + for (Object value : attrs.get("value")) { + return Arrays.stream((String[]) value).anyMatch(o -> "".equals(o) || o.equals(podNamespace)); + } + return false; + } + } + return false; + } + +}