diff --git a/server/skillhub-domain/src/main/java/com/iflytek/skillhub/domain/namespace/PersonalNamespaceNaming.java b/server/skillhub-domain/src/main/java/com/iflytek/skillhub/domain/namespace/PersonalNamespaceNaming.java index 5a9619d3..82f14a6e 100644 --- a/server/skillhub-domain/src/main/java/com/iflytek/skillhub/domain/namespace/PersonalNamespaceNaming.java +++ b/server/skillhub-domain/src/main/java/com/iflytek/skillhub/domain/namespace/PersonalNamespaceNaming.java @@ -3,6 +3,7 @@ package com.iflytek.skillhub.domain.namespace; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; +import java.util.UUID; /** * Renders the operator-configured name templates for a personal namespace. @@ -37,7 +38,8 @@ final class PersonalNamespaceNaming { Map values = Map.of( PersonalNamespaceSettings.PLACEHOLDER_USERNAME, username(owner), PersonalNamespaceSettings.PLACEHOLDER_EMAIL_PREFIX, emailPrefix(owner), - PersonalNamespaceSettings.PLACEHOLDER_USER_ID, blankToEmpty(owner.userId())); + PersonalNamespaceSettings.PLACEHOLDER_USER_ID, blankToEmpty(owner.userId()), + PersonalNamespaceSettings.PLACEHOLDER_RANDOM, randomSuffix()); Matcher matcher = PLACEHOLDER.matcher(template); StringBuilder rendered = new StringBuilder(); @@ -101,4 +103,8 @@ final class PersonalNamespaceNaming { private static String blankToEmpty(String value) { return value == null ? "" : value.trim(); } + + private static String randomSuffix() { + return UUID.randomUUID().toString().replace("-", "").substring(0, 8).toLowerCase(); + } } diff --git a/server/skillhub-domain/src/main/java/com/iflytek/skillhub/domain/namespace/PersonalNamespaceProvisioningProperties.java b/server/skillhub-domain/src/main/java/com/iflytek/skillhub/domain/namespace/PersonalNamespaceProvisioningProperties.java index ec0ca6e5..268138b2 100644 --- a/server/skillhub-domain/src/main/java/com/iflytek/skillhub/domain/namespace/PersonalNamespaceProvisioningProperties.java +++ b/server/skillhub-domain/src/main/java/com/iflytek/skillhub/domain/namespace/PersonalNamespaceProvisioningProperties.java @@ -24,9 +24,9 @@ public class PersonalNamespaceProvisioningProperties { * Spring property references. Operators change the templates in the admin console, so these * defaults only apply until someone does. */ - private String slugTemplate = "${username}"; + private String slugTemplate = "personal-${random}"; - private String displayNameTemplate = "${username}"; + private String displayNameTemplate = "${username}-个人空间"; public boolean isEnabled() { return enabled; diff --git a/server/skillhub-domain/src/main/java/com/iflytek/skillhub/domain/namespace/PersonalNamespaceSettings.java b/server/skillhub-domain/src/main/java/com/iflytek/skillhub/domain/namespace/PersonalNamespaceSettings.java index 62f817d7..65ca6e56 100644 --- a/server/skillhub-domain/src/main/java/com/iflytek/skillhub/domain/namespace/PersonalNamespaceSettings.java +++ b/server/skillhub-domain/src/main/java/com/iflytek/skillhub/domain/namespace/PersonalNamespaceSettings.java @@ -20,4 +20,5 @@ public record PersonalNamespaceSettings( public static final String PLACEHOLDER_USERNAME = "username"; public static final String PLACEHOLDER_EMAIL_PREFIX = "email_prefix"; public static final String PLACEHOLDER_USER_ID = "user_id"; + public static final String PLACEHOLDER_RANDOM = "random"; }