From c6da3932f3c6a9f59dd9d0a5a2b312a76c5d27a7 Mon Sep 17 00:00:00 2001 From: Victor_Jay Date: Mon, 1 Jun 2026 21:51:17 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20Space=20=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E7=BC=BA=E5=B0=91=20formatCount/str=20=E5=87=BD?= =?UTF-8?q?=E6=95=B0=E5=AF=BC=E8=87=B4=E7=9A=84=E5=90=AF=E5=8A=A8=20panic?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 theme/loader.go FuncMap 中添加 formatCount 和 str 函数 - formatCount 将 int64 格式化为中文计数(如 2.5万) - 控制器 ActiveFolderID 改为 uint 类型,避免模板中 str 类型比较 - 控制器传递 ActiveFolder 对象,移除模板内查找逻辑 - 清理旧模板替换残留的孤儿 HTML/SVG 代码 --- internal/controller/space_controller.go | 39 ++++++++++++++------ internal/theme/loader.go | 22 ++++++++++- templates/MetaLab-2026/html/space/index.html | 29 +++------------ 3 files changed, 53 insertions(+), 37 deletions(-) diff --git a/internal/controller/space_controller.go b/internal/controller/space_controller.go index 7d1f063..7ec1015 100644 --- a/internal/controller/space_controller.go +++ b/internal/controller/space_controller.go @@ -179,21 +179,25 @@ func (ctrl *SpaceController) loadCollectionsData(c *gin.Context, data gin.H, uid data["FoldersResult"] = folders // 默认展示第一个收藏夹的内容 - activeFolderID := c.DefaultQuery("folder", "") - if activeFolderID == "" && len(folders.Folders) > 0 { - activeFolderID = strconv.FormatUint(uint64(folders.Folders[0].ID), 10) + folderParam := c.DefaultQuery("folder", "") + var activeFolderID uint + if folderParam != "" { + fid, parseErr := strconv.ParseUint(folderParam, 10, 64) + if parseErr == nil { + activeFolderID = uint(fid) + } + } + if activeFolderID == 0 && len(folders.Folders) > 0 { + activeFolderID = folders.Folders[0].ID } var folderItems *service.FolderItemsResult - if activeFolderID != "" { - fid, parseErr := strconv.ParseUint(activeFolderID, 10, 64) - if parseErr == nil { - items, itemErr := ctrl.favoriteSvc.ListFolderItems(uid, uint(fid), page, pageSize) - if itemErr != nil || items == nil { - folderItems = &service.FolderItemsResult{Items: []model.FolderItem{}, Total: 0} - } else { - folderItems = items - } + if activeFolderID > 0 { + items, itemErr := ctrl.favoriteSvc.ListFolderItems(uid, activeFolderID, page, pageSize) + if itemErr != nil || items == nil { + folderItems = &service.FolderItemsResult{Items: []model.FolderItem{}, Total: 0} + } else { + folderItems = items } } if folderItems == nil { @@ -201,6 +205,17 @@ func (ctrl *SpaceController) loadCollectionsData(c *gin.Context, data gin.H, uid } data["FolderItems"] = folderItems data["ActiveFolderID"] = activeFolderID + + // 找到当前激活的收藏夹对象传给模板 + var activeFolder *model.Folder + for i := range folders.Folders { + if folders.Folders[i].ID == activeFolderID { + activeFolder = &folders.Folders[i] + break + } + } + data["ActiveFolder"] = activeFolder + data["Page"] = page data["TotalPages"] = folderItems.TotalPages data["PrevPage"] = max(1, page-1) diff --git a/internal/theme/loader.go b/internal/theme/loader.go index a9ccc0e..9064382 100644 --- a/internal/theme/loader.go +++ b/internal/theme/loader.go @@ -22,8 +22,10 @@ func LoadTemplates(roots ...TemplateRoot) (*template.Template, error) { funcMap := template.FuncMap{ "add": func(a, b int) int { return a + b }, "subtract": func(a, b int) int { return a - b }, - "formatTTL": formatTTL, - "assetV": common.AssetV, + "formatTTL": formatTTL, + "formatCount": formatCount, + "str": str, + "assetV": common.AssetV, "substr": func(s string, start, length int) string { runes := []rune(s) if start >= len(runes) { @@ -100,3 +102,19 @@ func formatTTL(minutes int) string { } return fmt.Sprintf("%d 天 %d 小时", days, remainHours) } + +// formatCount 将 int64 数字格式化为简洁中文计数(如 "2.5万"、"70.3万"、"0") +func formatCount(n int64) string { + if n < 10000 { + return fmt.Sprintf("%d", n) + } + if n < 100000000 { + v := float64(n) / 10000.0 + return fmt.Sprintf("%.1f万", v) + } + v := float64(n) / 100000000.0 + return fmt.Sprintf("%.1f亿", v) +} + +// str 将 uint 转为字符串,用于模板中与字符串比较 +func str(n uint) string { return fmt.Sprintf("%d", n) } diff --git a/templates/MetaLab-2026/html/space/index.html b/templates/MetaLab-2026/html/space/index.html index dc7557b..347ac91 100644 --- a/templates/MetaLab-2026/html/space/index.html +++ b/templates/MetaLab-2026/html/space/index.html @@ -351,7 +351,7 @@ {{if .FoldersResult}} {{range $f := .FoldersResult.Folders}} {{$f.Name}} @@ -366,32 +366,21 @@
{{if .FoldersResult}} {{if gt (len .FoldersResult.Folders) 0}} - {{/* 找到当前激活的收藏夹 */}} - {{$activeFolder := ""}} - {{range $f := .FoldersResult.Folders}} - {{if eq (str $.ActiveFolderID) (str $f.ID)}} - {{$activeFolder = $f}} - {{end}} - {{end}} - - {{if $activeFolder}} + {{if .ActiveFolder}}
- {{if $activeFolder.Description}}
- {{end}}
-

{{$activeFolder.Name}}

+

{{.ActiveFolder.Name}}

- {{if $activeFolder.IsPublic}}公开{{else}}私密{{end}} - · 视频数 {{.FolderItems.Total}} + {{if .ActiveFolder.IsPublic}}公开{{else}}私密{{end}} + · 文章数 {{.FolderItems.Total}}

-
@@ -406,14 +395,8 @@
-