From 5a5239e335275dc2739acbd5931b8694186f44e9 Mon Sep 17 00:00:00 2001 From: Asai Neko Date: Sat, 24 Jan 2026 12:48:11 +0800 Subject: [PATCH] Optomize user list service query bind struct Signed-off-by: Asai Neko --- api/user/list.go | 29 ++++++++++++++++++++++------- service/user.go | 12 +++++------- 2 files changed, 27 insertions(+), 14 deletions(-) diff --git a/api/user/list.go b/api/user/list.go index 034b403..0c4eeee 100644 --- a/api/user/list.go +++ b/api/user/list.go @@ -9,15 +9,30 @@ import ( ) func (self *UserHandler) List(c *gin.Context) { - limit, limitStatus := c.GetQuery("limit") - offset, offsetStatus := c.GetQuery("offset") + type ListQuery struct { + Limit *string `form:"limit"` + Offset *string `form:"offset"` + } + + var query ListQuery + if err := c.ShouldBindQuery(&query); err != nil { + exception := new(exception.Builder). + SetStatus(exception.StatusClient). + SetService(exception.ServiceUser). + SetEndpoint(exception.EndpointUserServiceList). + SetType(exception.TypeCommon). + SetOriginal(exception.CommonErrorInvalidInput). + Throw(c). + String() + + utils.HttpResponse(c, 400, exception) + return + } userListPayload := &service.UserListPayload{ - Context: c, - Limit: &limit, - LimitStatus: &limitStatus, - Offset: &offset, - OffsetStatus: &offsetStatus, + Context: c, + Limit: query.Limit, + Offset: query.Offset, } result := self.svc.ListUsers(userListPayload) diff --git a/service/user.go b/service/user.go index 216e3ce..626881c 100644 --- a/service/user.go +++ b/service/user.go @@ -279,11 +279,9 @@ func (self *UserServiceImpl) UpdateUserInfo(payload *UserInfoPayload) (result *U } type UserListPayload struct { - Context context.Context - Limit *string - LimitStatus *bool - Offset *string - OffsetStatus *bool + Context context.Context + Limit *string + Offset *string } type UserListResult struct { @@ -294,12 +292,12 @@ type UserListResult struct { // ListUsers func (self *UserServiceImpl) ListUsers(payload *UserListPayload) (result *UserListResult) { var limit string - if !*payload.LimitStatus || *payload.Limit == "" { + if payload.Limit == nil || *payload.Limit == "" { limit = "0" } var offset string - if !*payload.OffsetStatus || *payload.Offset == "" { + if payload.Offset == nil || *payload.Offset == "" { exception := new(exception.Builder). SetStatus(exception.StatusUser). SetService(exception.ServiceUser).