This commit is contained in:
Alex-larget
2026-03-24 18:45:32 +08:00
parent dcb7961945
commit f3d74ce94a
68 changed files with 2461 additions and 2535 deletions

View File

@@ -86,7 +86,8 @@ type cachedPartRow struct {
ChapterCount int `json:"chapterCount"`
MinSortOrder int `json:"minSortOrder"`
// Icon 可选system_config.book_part_icons JSON 中按 part_id 配置的封面图 URL
Icon string `json:"icon,omitempty"`
Icon string `json:"icon,omitempty"`
BadgeText string `json:"badgeText,omitempty"`
}
type cachedFixedItem struct {
ID string `json:"id"`
@@ -137,19 +138,46 @@ func loadBookPartIconURLs() map[string]string {
return out
}
// mergeBookPartIcons 将配置中的篇封面 URL 写入 parts每次接口响应前调用避免 Redis 旧缓存缺 icon
// loadBookPartBadgeTexts 读取 system_config.book_part_badges{"part-1":"新"}key 与 chapters.part_id 一致
func loadBookPartBadgeTexts() map[string]string {
out := map[string]string{}
var row model.SystemConfig
if err := database.DB().Where("config_key = ?", "book_part_badges").First(&row).Error; err != nil {
return out
}
var raw map[string]interface{}
if err := json.Unmarshal(row.ConfigValue, &raw); err != nil {
return out
}
for k, v := range raw {
k = strings.TrimSpace(k)
if k == "" {
continue
}
if s, ok := v.(string); ok {
s = strings.TrimSpace(s)
if s != "" {
out[k] = s
}
}
}
return out
}
// mergeBookPartIcons 将配置中的篇封面 URL/角标写入 parts每次接口响应前调用避免 Redis 旧缓存缺字段)
func mergeBookPartIcons(parts []cachedPartRow) {
if len(parts) == 0 {
return
}
m := loadBookPartIconURLs()
if len(m) == 0 {
return
}
bm := loadBookPartBadgeTexts()
for i := range parts {
if u := strings.TrimSpace(m[parts[i].PartID]); u != "" {
parts[i].Icon = u
}
if b := strings.TrimSpace(bm[parts[i].PartID]); b != "" {
parts[i].BadgeText = b
}
}
}