refactor: 提取公共分页解析函数 parsePageAndSize
- 新增 internal/api/handler/common.go 存放 handler 层公共辅助函数 - parsePageAndSize: 统一提取 page/page_size 参数解析、默认值设置、ClampPageSize 调用 - device/log/webhook handler: 替换重复的分页解析代码为 parsePageAndSize 调用 - 清理不再需要的 strconv/pagination 导入
This commit is contained in:
21
internal/api/handler/common.go
Normal file
21
internal/api/handler/common.go
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
package handler
|
||||||
|
|
||||||
|
import (
|
||||||
|
"strconv"
|
||||||
|
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
|
||||||
|
"github.com/user-management-system/internal/pagination"
|
||||||
|
)
|
||||||
|
|
||||||
|
// parsePageAndSize extracts and validates page & page_size from query parameters.
|
||||||
|
// Returns page (>=1) and pageSize (clamped to [1, MaxPageSize]).
|
||||||
|
func parsePageAndSize(c *gin.Context) (page, pageSize int) {
|
||||||
|
page, _ = strconv.Atoi(c.DefaultQuery("page", "1"))
|
||||||
|
if page < 1 {
|
||||||
|
page = 1
|
||||||
|
}
|
||||||
|
pageSize, _ = strconv.Atoi(c.DefaultQuery("page_size", strconv.Itoa(pagination.DefaultPageSize)))
|
||||||
|
pageSize = pagination.ClampPageSize(pageSize)
|
||||||
|
return
|
||||||
|
}
|
||||||
@@ -10,7 +10,6 @@ import (
|
|||||||
|
|
||||||
"github.com/user-management-system/internal/api/middleware"
|
"github.com/user-management-system/internal/api/middleware"
|
||||||
"github.com/user-management-system/internal/domain"
|
"github.com/user-management-system/internal/domain"
|
||||||
"github.com/user-management-system/internal/pagination"
|
|
||||||
"github.com/user-management-system/internal/service"
|
"github.com/user-management-system/internal/service"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -88,12 +87,7 @@ func (h *DeviceHandler) GetMyDevices(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
page, _ := strconv.Atoi(c.DefaultQuery("page", "1"))
|
page, pageSize := parsePageAndSize(c)
|
||||||
if page < 1 {
|
|
||||||
page = 1
|
|
||||||
}
|
|
||||||
pageSize, _ := strconv.Atoi(c.DefaultQuery("page_size", strconv.Itoa(pagination.DefaultPageSize)))
|
|
||||||
pageSize = pagination.ClampPageSize(pageSize)
|
|
||||||
|
|
||||||
devices, total, err := h.deviceService.GetUserDevices(c.Request.Context(), userID, page, pageSize)
|
devices, total, err := h.deviceService.GetUserDevices(c.Request.Context(), userID, page, pageSize)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -317,12 +311,7 @@ func (h *DeviceHandler) GetUserDevices(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
page, _ := strconv.Atoi(c.DefaultQuery("page", "1"))
|
page, pageSize := parsePageAndSize(c)
|
||||||
if page < 1 {
|
|
||||||
page = 1
|
|
||||||
}
|
|
||||||
pageSize, _ := strconv.Atoi(c.DefaultQuery("page_size", strconv.Itoa(pagination.DefaultPageSize)))
|
|
||||||
pageSize = pagination.ClampPageSize(pageSize)
|
|
||||||
|
|
||||||
devices, total, err := h.deviceService.GetUserDevices(c.Request.Context(), userID, page, pageSize)
|
devices, total, err := h.deviceService.GetUserDevices(c.Request.Context(), userID, page, pageSize)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -3,11 +3,9 @@ package handler
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
|
||||||
|
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
|
|
||||||
"github.com/user-management-system/internal/pagination"
|
|
||||||
"github.com/user-management-system/internal/service"
|
"github.com/user-management-system/internal/service"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -43,12 +41,7 @@ func (h *LogHandler) GetMyLoginLogs(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
page, _ := strconv.Atoi(c.DefaultQuery("page", "1"))
|
page, pageSize := parsePageAndSize(c)
|
||||||
if page < 1 {
|
|
||||||
page = 1
|
|
||||||
}
|
|
||||||
pageSize, _ := strconv.Atoi(c.DefaultQuery("page_size", strconv.Itoa(pagination.DefaultPageSize)))
|
|
||||||
pageSize = pagination.ClampPageSize(pageSize)
|
|
||||||
|
|
||||||
logs, total, err := h.loginLogService.GetMyLoginLogs(c.Request.Context(), userID, page, pageSize)
|
logs, total, err := h.loginLogService.GetMyLoginLogs(c.Request.Context(), userID, page, pageSize)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -86,12 +79,7 @@ func (h *LogHandler) GetMyOperationLogs(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
page, _ := strconv.Atoi(c.DefaultQuery("page", "1"))
|
page, pageSize := parsePageAndSize(c)
|
||||||
if page < 1 {
|
|
||||||
page = 1
|
|
||||||
}
|
|
||||||
pageSize, _ := strconv.Atoi(c.DefaultQuery("page_size", strconv.Itoa(pagination.DefaultPageSize)))
|
|
||||||
pageSize = pagination.ClampPageSize(pageSize)
|
|
||||||
|
|
||||||
logs, total, err := h.operationLogService.GetMyOperationLogs(c.Request.Context(), userID, page, pageSize)
|
logs, total, err := h.operationLogService.GetMyOperationLogs(c.Request.Context(), userID, page, pageSize)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -66,12 +66,7 @@ func (h *WebhookHandler) CreateWebhook(c *gin.Context) {
|
|||||||
// @Failure 500 {object} Response "服务器错误"
|
// @Failure 500 {object} Response "服务器错误"
|
||||||
// @Router /api/v1/webhooks [get]
|
// @Router /api/v1/webhooks [get]
|
||||||
func (h *WebhookHandler) ListWebhooks(c *gin.Context) {
|
func (h *WebhookHandler) ListWebhooks(c *gin.Context) {
|
||||||
page, _ := strconv.Atoi(c.DefaultQuery("page", "1"))
|
page, pageSize := parsePageAndSize(c)
|
||||||
if page < 1 {
|
|
||||||
page = 1
|
|
||||||
}
|
|
||||||
pageSize, _ := strconv.Atoi(c.DefaultQuery("page_size", strconv.Itoa(pagination.DefaultPageSize)))
|
|
||||||
pageSize = pagination.ClampPageSize(pageSize)
|
|
||||||
offset := (page - 1) * pageSize
|
offset := (page - 1) * pageSize
|
||||||
|
|
||||||
userID, _ := c.Get("user_id")
|
userID, _ := c.Get("user_id")
|
||||||
@@ -178,9 +173,7 @@ func (h *WebhookHandler) GetWebhookDeliveries(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
limit, _ := strconv.Atoi(c.DefaultQuery("limit", strconv.Itoa(pagination.DefaultPageSize)))
|
limit, _ := strconv.Atoi(c.DefaultQuery("limit", strconv.Itoa(pagination.DefaultPageSize)))
|
||||||
if limit < 1 || limit > pagination.MaxPageSize {
|
limit = pagination.ClampPageSize(limit)
|
||||||
limit = pagination.DefaultPageSize
|
|
||||||
}
|
|
||||||
|
|
||||||
deliveries, err := h.webhookService.GetWebhookDeliveries(c.Request.Context(), id, limit)
|
deliveries, err := h.webhookService.GetWebhookDeliveries(c.Request.Context(), id, limit)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
Reference in New Issue
Block a user