From 1f7a2237684d1dba367c5edafa37590f3583bb7f Mon Sep 17 00:00:00 2001 From: long-agent Date: Fri, 8 May 2026 12:40:36 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E6=8F=90=E5=8F=96=E5=88=86?= =?UTF-8?q?=E9=A1=B5=E9=AD=94=E6=B3=95=E6=95=B0=E5=AD=97=E4=B8=BA=20pagina?= =?UTF-8?q?tion=20=E5=B8=B8=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - handler 层: device/log/webhook/user handler 使用 pagination.DefaultPageSize/MaxPageSize - service 层: device/login_log/operation_log service 使用 pagination.DefaultPageSize - repository 层: user repository 使用 pagination.DefaultPageSize/MaxPageSize - 消除 8 处硬编码的 20/100 分页魔法数字 --- internal/api/handler/device_handler.go | 13 +++++++------ internal/api/handler/log_handler.go | 13 +++++++------ internal/api/handler/user_handler.go | 3 ++- internal/api/handler/webhook_handler.go | 13 +++++++------ internal/repository/user.go | 6 +++--- internal/service/device.go | 4 ++-- internal/service/login_log.go | 2 +- internal/service/operation_log.go | 2 +- 8 files changed, 30 insertions(+), 26 deletions(-) diff --git a/internal/api/handler/device_handler.go b/internal/api/handler/device_handler.go index 407a978..98f6248 100644 --- a/internal/api/handler/device_handler.go +++ b/internal/api/handler/device_handler.go @@ -10,6 +10,7 @@ import ( "github.com/user-management-system/internal/api/middleware" "github.com/user-management-system/internal/domain" + "github.com/user-management-system/internal/pagination" "github.com/user-management-system/internal/service" ) @@ -88,9 +89,9 @@ func (h *DeviceHandler) GetMyDevices(c *gin.Context) { } page, _ := strconv.Atoi(c.DefaultQuery("page", "1")) - pageSize, _ := strconv.Atoi(c.DefaultQuery("page_size", "20")) - if pageSize < 1 || pageSize > 100 { - pageSize = 20 + pageSize, _ := strconv.Atoi(c.DefaultQuery("page_size", strconv.Itoa(pagination.DefaultPageSize))) + if pageSize < 1 || pageSize > pagination.MaxPageSize { + pageSize = pagination.DefaultPageSize } devices, total, err := h.deviceService.GetUserDevices(c.Request.Context(), userID, page, pageSize) @@ -316,9 +317,9 @@ func (h *DeviceHandler) GetUserDevices(c *gin.Context) { } page, _ := strconv.Atoi(c.DefaultQuery("page", "1")) - pageSize, _ := strconv.Atoi(c.DefaultQuery("page_size", "20")) - if pageSize < 1 || pageSize > 100 { - pageSize = 20 + pageSize, _ := strconv.Atoi(c.DefaultQuery("page_size", strconv.Itoa(pagination.DefaultPageSize))) + if pageSize < 1 || pageSize > pagination.MaxPageSize { + pageSize = pagination.DefaultPageSize } devices, total, err := h.deviceService.GetUserDevices(c.Request.Context(), userID, page, pageSize) diff --git a/internal/api/handler/log_handler.go b/internal/api/handler/log_handler.go index 65c2092..d3f6637 100644 --- a/internal/api/handler/log_handler.go +++ b/internal/api/handler/log_handler.go @@ -7,6 +7,7 @@ import ( "github.com/gin-gonic/gin" + "github.com/user-management-system/internal/pagination" "github.com/user-management-system/internal/service" ) @@ -43,9 +44,9 @@ func (h *LogHandler) GetMyLoginLogs(c *gin.Context) { } page, _ := strconv.Atoi(c.DefaultQuery("page", "1")) - pageSize, _ := strconv.Atoi(c.DefaultQuery("page_size", "20")) - if pageSize < 1 || pageSize > 100 { - pageSize = 20 + pageSize, _ := strconv.Atoi(c.DefaultQuery("page_size", strconv.Itoa(pagination.DefaultPageSize))) + if pageSize < 1 || pageSize > pagination.MaxPageSize { + pageSize = pagination.DefaultPageSize } logs, total, err := h.loginLogService.GetMyLoginLogs(c.Request.Context(), userID, page, pageSize) @@ -85,9 +86,9 @@ func (h *LogHandler) GetMyOperationLogs(c *gin.Context) { } page, _ := strconv.Atoi(c.DefaultQuery("page", "1")) - pageSize, _ := strconv.Atoi(c.DefaultQuery("page_size", "20")) - if pageSize < 1 || pageSize > 100 { - pageSize = 20 + pageSize, _ := strconv.Atoi(c.DefaultQuery("page_size", strconv.Itoa(pagination.DefaultPageSize))) + if pageSize < 1 || pageSize > pagination.MaxPageSize { + pageSize = pagination.DefaultPageSize } logs, total, err := h.operationLogService.GetMyOperationLogs(c.Request.Context(), userID, page, pageSize) diff --git a/internal/api/handler/user_handler.go b/internal/api/handler/user_handler.go index 5a4a006..095bf16 100644 --- a/internal/api/handler/user_handler.go +++ b/internal/api/handler/user_handler.go @@ -10,6 +10,7 @@ import ( "github.com/user-management-system/internal/api/middleware" "github.com/user-management-system/internal/auth" "github.com/user-management-system/internal/domain" + "github.com/user-management-system/internal/pagination" "github.com/user-management-system/internal/service" ) @@ -115,7 +116,7 @@ func (h *UserHandler) ListUsers(c *gin.Context) { // Fallback to legacy offset-based pagination offset, _ := strconv.ParseInt(c.DefaultQuery("offset", "0"), 10, 64) - limit, _ := strconv.ParseInt(c.DefaultQuery("limit", "20"), 10, 64) + limit, _ := strconv.ParseInt(c.DefaultQuery("limit", strconv.Itoa(pagination.DefaultPageSize)), 10, 64) users, total, err := h.userService.List(c.Request.Context(), int(offset), int(limit)) if err != nil { diff --git a/internal/api/handler/webhook_handler.go b/internal/api/handler/webhook_handler.go index c7ec067..9c1c35a 100644 --- a/internal/api/handler/webhook_handler.go +++ b/internal/api/handler/webhook_handler.go @@ -6,6 +6,7 @@ import ( "github.com/gin-gonic/gin" + "github.com/user-management-system/internal/pagination" "github.com/user-management-system/internal/service" ) @@ -66,12 +67,12 @@ func (h *WebhookHandler) CreateWebhook(c *gin.Context) { // @Router /api/v1/webhooks [get] func (h *WebhookHandler) ListWebhooks(c *gin.Context) { page, _ := strconv.Atoi(c.DefaultQuery("page", "1")) - pageSize, _ := strconv.Atoi(c.DefaultQuery("page_size", "20")) + pageSize, _ := strconv.Atoi(c.DefaultQuery("page_size", strconv.Itoa(pagination.DefaultPageSize))) if page < 1 { page = 1 } - if pageSize < 1 || pageSize > 100 { - pageSize = 20 + if pageSize < 1 || pageSize > pagination.MaxPageSize { + pageSize = pagination.DefaultPageSize } offset := (page - 1) * pageSize @@ -178,9 +179,9 @@ func (h *WebhookHandler) GetWebhookDeliveries(c *gin.Context) { return } - limit, _ := strconv.Atoi(c.DefaultQuery("limit", "20")) - if limit < 1 || limit > 100 { - limit = 20 + limit, _ := strconv.Atoi(c.DefaultQuery("limit", strconv.Itoa(pagination.DefaultPageSize))) + if limit < 1 || limit > pagination.MaxPageSize { + limit = pagination.DefaultPageSize } deliveries, err := h.webhookService.GetWebhookDeliveries(c.Request.Context(), id, limit) diff --git a/internal/repository/user.go b/internal/repository/user.go index 402483c..e82308e 100644 --- a/internal/repository/user.go +++ b/internal/repository/user.go @@ -362,10 +362,10 @@ func (r *UserRepository) AdvancedSearch(ctx context.Context, filter *AdvancedFil // 分页 limit := filter.Limit if limit <= 0 { - limit = 20 + limit = pagination.DefaultPageSize } - if limit > 200 { - limit = 200 + if limit > pagination.MaxPageSize { + limit = pagination.MaxPageSize } query = query.Offset(filter.Offset).Limit(limit) diff --git a/internal/service/device.go b/internal/service/device.go index 8507d03..8ea04a2 100644 --- a/internal/service/device.go +++ b/internal/service/device.go @@ -223,7 +223,7 @@ func (s *DeviceService) GetUserDevices(ctx context.Context, userID int64, page, page = 1 } if pageSize <= 0 { - pageSize = 20 + pageSize = pagination.DefaultPageSize } offset := (page - 1) * pageSize @@ -275,7 +275,7 @@ func (s *DeviceService) GetActiveDevices(ctx context.Context, page, pageSize int page = 1 } if pageSize <= 0 { - pageSize = 20 + pageSize = pagination.DefaultPageSize } offset := (page - 1) * pageSize diff --git a/internal/service/login_log.go b/internal/service/login_log.go index ff542ff..5be6138 100644 --- a/internal/service/login_log.go +++ b/internal/service/login_log.go @@ -228,7 +228,7 @@ func (s *LoginLogService) GetMyLoginLogs(ctx context.Context, userID int64, page page = 1 } if pageSize <= 0 { - pageSize = 20 + pageSize = pagination.DefaultPageSize } offset := (page - 1) * pageSize return s.loginLogRepo.ListByUserID(ctx, userID, offset, pageSize) diff --git a/internal/service/operation_log.go b/internal/service/operation_log.go index 5f1b816..703a56f 100644 --- a/internal/service/operation_log.go +++ b/internal/service/operation_log.go @@ -143,7 +143,7 @@ func (s *OperationLogService) GetMyOperationLogs(ctx context.Context, userID int page = 1 } if pageSize <= 0 { - pageSize = 20 + pageSize = pagination.DefaultPageSize } offset := (page - 1) * pageSize return s.operationLogRepo.ListByUserID(ctx, userID, offset, pageSize)