package service import ( "crypto/rand" "encoding/base64" "strings" ) func normalizePage(page, size int) (int, int) { if page < 1 { page = 1 } if size < 1 || size > 100 { size = 20 } return page, size } func randomToken(prefix string, byteCount int) (string, error) { raw := make([]byte, byteCount) if _, err := rand.Read(raw); err != nil { return "", err } return prefix + base64.RawURLEncoding.EncodeToString(raw), nil } func scopeList(scopes string) []string { set := ParseScopes(scopes) items := make([]string, 0, len(set)) for scope := range set { items = append(items, scope) } return items } func fallbackName(value, fallback string) string { if strings.TrimSpace(value) != "" { return strings.TrimSpace(value) } return fallback } // IsLegacyLewanMirrorSKU 判断是否为历史乐玩镜像 sku(LEWAN_*/lewan_*)。 // 对外目录应使用英文主 sku;乐玩只作为履约配置挂接。 func IsLegacyLewanMirrorSKU(sku string) bool { normalized := strings.ToLower(strings.TrimSpace(sku)) return strings.HasPrefix(normalized, "lewan_") }