diff --git a/internal/controller/admin/admin_controller.go b/internal/controller/admin/admin_controller.go index 2849f7f..f32ec00 100644 --- a/internal/controller/admin/admin_controller.go +++ b/internal/controller/admin/admin_controller.go @@ -29,9 +29,15 @@ func (ac *AdminController) Dashboard(c *gin.Context) { if err != nil { totalUsers = 0 } + storeMetrics := ac.adminService.GetStoreMetrics() c.HTML(http.StatusOK, "admin/dashboard/index.html", common.BuildAdminPageData(c, gin.H{ - "Title": "管理首页", - "TotalUsers": totalUsers, + "Title": "管理首页", + "TotalUsers": totalUsers, + "StoreType": storeMetrics.Type, + "StoreHealthy": storeMetrics.Healthy, + "StoreDegraded": storeMetrics.Degraded, + "DegradedNote": storeMetrics.DegradedNote, + "ActiveSessions": storeMetrics.ActiveCount, })) } diff --git a/internal/controller/admin/interfaces.go b/internal/controller/admin/interfaces.go index 68ad123..cd12271 100644 --- a/internal/controller/admin/interfaces.go +++ b/internal/controller/admin/interfaces.go @@ -3,14 +3,16 @@ package admin import ( "metazone.cc/metalab/internal/model" "metazone.cc/metalab/internal/service" + "metazone.cc/metalab/internal/session" ) -// adminUseCase AdminController 对 AdminService 的最小依赖(ISP:4 个方法) +// adminUseCase AdminController 对 AdminService 的最小依赖(ISP:5 个方法) 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) + GetStoreMetrics() session.StoreMetrics } // auditUseCase AuditController 对 AuditService 的最小依赖(ISP:3 个方法) diff --git a/internal/service/admin_service.go b/internal/service/admin_service.go index 2f8bfd6..aaa78ae 100644 --- a/internal/service/admin_service.go +++ b/internal/service/admin_service.go @@ -112,6 +112,11 @@ func (s *AdminService) CountUsers() (int64, error) { return s.userRepo.CountSearchUsers("", "", "") } +// GetStoreMetrics 返回会话存储状态信息(管理首页用) +func (s *AdminService) GetStoreMetrics() session.StoreMetrics { + return s.sessionManager.GetStoreMetrics() +} + // 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 a0948be..15c91d1 100644 --- a/templates/admin/html/dashboard/index.html +++ b/templates/admin/html/dashboard/index.html @@ -19,6 +19,23 @@ +