This commit is contained in:
2026-10-24 11:22:21 +08:00
parent 43642cfb56
commit 53ade059d6
6 changed files with 41 additions and 14 deletions
+10 -2
View File
@@ -144,15 +144,23 @@ func GetSlugAbbr(text string) string {
return b.String()
}
// MakeAbbrSlug 优先按标题拼音首字母缩写生成 slug;缩写为空或全数字时回退 5 位随机字母,碰撞时追加 3 位随机字母。
// AbbrSlugMaxLen slug 最大长度(含碰撞时追加的随机后缀)。
const AbbrSlugMaxLen = 20
// MakeAbbrSlug 优先按标题拼音首字母缩写生成 slug;缩写为空或全数字时回退 5 位随机字母,碰撞时追加 3 位随机字母,整体长度不超过 AbbrSlugMaxLen。
func MakeAbbrSlug(source string, exists func(string) bool) string {
abbr := GetSlugAbbr(source)
if abbr == "" || IsSlugAllDigits(abbr) {
abbr = strings.ToLower(GetRandomLetters(5))
}
const suffixLen = 3
baseMax := AbbrSlugMaxLen - suffixLen
if len(abbr) > baseMax {
abbr = abbr[:baseMax]
}
final := abbr
for exists(final) {
final = abbr + strings.ToLower(GetRandomLetters(3))
final = abbr + strings.ToLower(GetRandomLetters(suffixLen))
}
return final
}
+2
View File
@@ -23,6 +23,7 @@ type TagPlaylet struct {
PlayName string
Description string
Slug string
OldSlugs string
Desc string
Anchor string
Cover string
@@ -86,6 +87,7 @@ func init() {
FN.Playlet.PlayName = "playName"
FN.Playlet.Description = "description"
FN.Playlet.Slug = "slug"
FN.Playlet.OldSlugs = "oldSlugs"
FN.Playlet.Desc = "desc"
FN.Playlet.Anchor = "anchor"
FN.Playlet.Cover = "cover"
+1
View File
@@ -105,6 +105,7 @@ type Playlet struct {
PlayName string `json:"playName" bson:"playName"` // 剧名,后台维护
Description string `json:"description" bson:"description"` // SEO Description,按剧名规则自动生成
Slug string `json:"slug" bson:"slug"` // slug
OldSlugs []string `json:"oldSlugs" bson:"oldSlugs"` // 历史 slug 列表,用于兼容旧链接
Desc string `json:"desc" bson:"desc"` // 简介
Anchor string `json:"anchor" bson:"anchor"` // 作者/演员
Cover string `json:"cover" bson:"cover"` // 封面原图
+14 -1
View File
@@ -122,13 +122,26 @@ func AppendV1PrefixToUrlPath(name string) string {
}
func AppendsMediaS3Version(name string) string {
// 默认使用V1
// 以下前缀是直接挂在 origDomain 根下的媒资桶,不需要再加 /v2 前缀。
if hasMediaRootPrefix(name) {
return ""
}
if name != "" && !strings.HasPrefix(name, "v2/") && !strings.HasPrefix(name, "v1/") && !strings.HasPrefix(name, "v3/") &&
!strings.HasPrefix(name, "/v2") && !strings.HasPrefix(name, "/v1") && !strings.HasPrefix(name, "/v3") {
return "/v2"
}
return ""
}
// hasMediaRootPrefix 判定路径是否属于直接挂在 origDomain 根下的媒资桶,不应再追加 v1/v2 前缀。
func hasMediaRootPrefix(name string) bool {
for _, p := range []string{"k12/", "bktappupdata/", "/k12/", "/bktappupdata/"} {
if strings.HasPrefix(name, p) {
return true
}
}
return false
}
func AppendsMediaS3VersionV1(name string) string {
// 默认使用V1
if name != "" && !strings.HasPrefix(name, "v2/") && !strings.HasPrefix(name, "v1/") && !strings.HasPrefix(name, "v3/") &&