From 3937945b43bf672418c06e87ac9902de45cb006c Mon Sep 17 00:00:00 2001 From: Victor_Jay Date: Tue, 26 May 2026 23:21:32 +0800 Subject: [PATCH] =?UTF-8?q?feat(admin):=20=E7=AE=A1=E7=90=86=E9=A6=96?= =?UTF-8?q?=E9=A1=B5=E6=A0=87=E9=A2=98=E4=BF=AE=E6=AD=A3=E3=80=81=E8=A7=92?= =?UTF-8?q?=E8=89=B2=E4=B8=AD=E6=96=87=E6=98=BE=E7=A4=BA=E5=8F=8A=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E6=80=BB=E6=95=B0=E8=A1=A5=E5=85=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修正 admin layout title 后缀为「MetaLab 管理面板」 - 当前角色从原始字符串改为中文显示(注入 RoleDisplayName) - 补全管理首页「用户总数」统计,新增 CountUsers 方法 - 遵循 ISP 最小接口,Service 复用已有 CountSearchUsers --- internal/common/helper.go | 5 +++++ internal/controller/admin/admin_controller.go | 7 ++++++- internal/controller/admin/interfaces.go | 3 ++- internal/service/admin_service.go | 5 +++++ templates/admin/html/dashboard/index.html | 4 ++-- templates/admin/html/layout/base.html | 2 +- 6 files changed, 21 insertions(+), 5 deletions(-) diff --git a/internal/common/helper.go b/internal/common/helper.go index 73be484..703898f 100644 --- a/internal/common/helper.go +++ b/internal/common/helper.go @@ -36,6 +36,11 @@ func BuildAdminPageData(c *gin.Context, extra gin.H) gin.H { if role, exists := c.Get("role"); exists { roleStr := role.(string) data["Role"] = roleStr + if name, ok := model.RoleDisplayNames[roleStr]; ok { + data["RoleDisplayName"] = name + } else { + data["RoleDisplayName"] = roleStr + } data["CanManageUsers"] = model.HasMinRole(roleStr, model.RoleAdmin) data["CanManageSettings"] = model.HasMinRole(roleStr, model.RoleOwner) data["IsOwner"] = model.HasMinRole(roleStr, model.RoleOwner) diff --git a/internal/controller/admin/admin_controller.go b/internal/controller/admin/admin_controller.go index a75244f..79630da 100644 --- a/internal/controller/admin/admin_controller.go +++ b/internal/controller/admin/admin_controller.go @@ -25,8 +25,13 @@ func NewAdminController(adminService adminUseCase) *AdminController { // Dashboard 管理首页(欢迎页) func (ac *AdminController) Dashboard(c *gin.Context) { + totalUsers, err := ac.adminService.CountUsers() + if err != nil { + totalUsers = 0 + } c.HTML(http.StatusOK, "admin/dashboard/index.html", common.BuildAdminPageData(c, gin.H{ - "Title": "管理首页", + "Title": "管理首页", + "TotalUsers": totalUsers, })) } diff --git a/internal/controller/admin/interfaces.go b/internal/controller/admin/interfaces.go index cd6f984..505f36c 100644 --- a/internal/controller/admin/interfaces.go +++ b/internal/controller/admin/interfaces.go @@ -2,9 +2,10 @@ package admin import "metazone.cc/metalab/internal/service" -// adminUseCase AdminController 对 AdminService 的最小依赖(ISP:3 个方法) +// adminUseCase AdminController 对 AdminService 的最小依赖(ISP:4 个方法) type adminUseCase interface { ListUsers(params service.ListUsersParams) (*service.ListUsersResult, error) UpdateUserStatus(operatorUID, targetUID uint, newStatus string) error ResetUserToken(operatorUID, targetUID uint) error + CountUsers() (int64, error) } diff --git a/internal/service/admin_service.go b/internal/service/admin_service.go index 919fcf1..efeb1d9 100644 --- a/internal/service/admin_service.go +++ b/internal/service/admin_service.go @@ -112,6 +112,11 @@ func (s *AdminService) ResetUserToken(operatorUID, targetUID uint) error { }) } +// CountUsers 统计用户总数(管理首页用) +func (s *AdminService) CountUsers() (int64, error) { + return s.userRepo.CountSearchUsers("", "", "") +} + // checkAndOperate 通用权限检查 + 执行操作 func (s *AdminService) checkAndOperate(operatorUID, targetUID uint, operate func(*model.User, *model.User) error) error { // 1. 不可操作自己 diff --git a/templates/admin/html/dashboard/index.html b/templates/admin/html/dashboard/index.html index 665b002..a0948be 100644 --- a/templates/admin/html/dashboard/index.html +++ b/templates/admin/html/dashboard/index.html @@ -7,7 +7,7 @@
-
用户总数
+
用户总数
{{.TotalUsers}}
@@ -15,7 +15,7 @@
-
当前角色
{{.Role}}
+
当前角色
{{.RoleDisplayName}}
diff --git a/templates/admin/html/layout/base.html b/templates/admin/html/layout/base.html index 32ccebb..30840bf 100644 --- a/templates/admin/html/layout/base.html +++ b/templates/admin/html/layout/base.html @@ -4,7 +4,7 @@ {{if .CSRFToken}}{{end}} -{{.Title}} - MetaLab CP +{{.Title}} - MetaLab 管理面板 {{if .ExtraCSS}}