From 809dbf2cac91019e43cb199e45e127bfc0019818 Mon Sep 17 00:00:00 2001 From: zetaloop Date: Fri, 24 Apr 2026 06:31:40 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=BB=9F=E4=B8=80=E6=89=80=E6=9C=89=20R?= =?UTF-8?q?PC=20=E5=88=86=E9=A1=B5=E6=A0=A1=E9=AA=8C=E4=B8=BA=20max=3D100?= =?UTF-8?q?=20=E5=B9=B6=E8=A1=A5=E9=BD=90=E9=BB=98=E8=AE=A4=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rpc/internal/logic/searchCommentLikesLogic.go | 4 ++++ .../rpc/internal/logic/searchCommentsLogic.go | 4 ++++ .../rpc/internal/logic/searchPostLikesLogic.go | 4 ++++ .../rpc/internal/logic/searchPostsLogic.go | 4 ++++ app/game/rpc/internal/logic/searchGamesLogic.go | 10 ++++++++-- .../rpc/internal/logic/searchOrderStateLogsLogic.go | 5 ++++- app/order/rpc/internal/logic/searchOrdersLogic.go | 5 ++++- .../rpc/internal/logic/searchPlayerServicesLogic.go | 8 +++++++- app/player/rpc/internal/logic/searchPlayersLogic.go | 12 ++++++++++++ .../internal/logic/searchShopInvitationsLogic.go | 5 ++++- .../rpc/internal/logic/searchShopPlayersLogic.go | 5 ++++- app/shop/rpc/internal/logic/searchShopsLogic.go | 5 ++++- .../internal/logic/searchUserVerificationsLogic.go | 11 ++++++++--- app/users/rpc/internal/logic/searchUsersLogic.go | 13 ++++++++----- .../internal/logic/searchWalletTransactionsLogic.go | 6 ++++++ 15 files changed, 85 insertions(+), 16 deletions(-) diff --git a/app/community/rpc/internal/logic/searchCommentLikesLogic.go b/app/community/rpc/internal/logic/searchCommentLikesLogic.go index 4172093..e5a4a67 100644 --- a/app/community/rpc/internal/logic/searchCommentLikesLogic.go +++ b/app/community/rpc/internal/logic/searchCommentLikesLogic.go @@ -2,6 +2,7 @@ package logic import ( "context" + "errors" "juwan-backend/app/community/rpc/internal/svc" "juwan-backend/app/community/rpc/pb" @@ -28,6 +29,9 @@ func (l *SearchCommentLikesLogic) SearchCommentLikes(in *pb.SearchCommentLikesRe if limit <= 0 { limit = 20 } + if limit > 100 { + return nil, errors.New("limit too large") + } offset := in.GetOffset() if offset < 0 { offset = 0 diff --git a/app/community/rpc/internal/logic/searchCommentsLogic.go b/app/community/rpc/internal/logic/searchCommentsLogic.go index 1e8cbab..da6adf4 100644 --- a/app/community/rpc/internal/logic/searchCommentsLogic.go +++ b/app/community/rpc/internal/logic/searchCommentsLogic.go @@ -2,6 +2,7 @@ package logic import ( "context" + "errors" "strings" "juwan-backend/app/community/rpc/internal/svc" @@ -29,6 +30,9 @@ func (l *SearchCommentsLogic) SearchComments(in *pb.SearchCommentsReq) (*pb.Sear if limit <= 0 { limit = 20 } + if limit > 100 { + return nil, errors.New("limit too large") + } offset := in.GetOffset() if offset < 0 { offset = 0 diff --git a/app/community/rpc/internal/logic/searchPostLikesLogic.go b/app/community/rpc/internal/logic/searchPostLikesLogic.go index 9a8d228..cffdcfe 100644 --- a/app/community/rpc/internal/logic/searchPostLikesLogic.go +++ b/app/community/rpc/internal/logic/searchPostLikesLogic.go @@ -2,6 +2,7 @@ package logic import ( "context" + "errors" "juwan-backend/app/community/rpc/internal/svc" "juwan-backend/app/community/rpc/pb" @@ -28,6 +29,9 @@ func (l *SearchPostLikesLogic) SearchPostLikes(in *pb.SearchPostLikesReq) (*pb.S if limit <= 0 { limit = 20 } + if limit > 100 { + return nil, errors.New("limit too large") + } offset := in.GetOffset() if offset < 0 { offset = 0 diff --git a/app/community/rpc/internal/logic/searchPostsLogic.go b/app/community/rpc/internal/logic/searchPostsLogic.go index 908803c..0ded0a7 100644 --- a/app/community/rpc/internal/logic/searchPostsLogic.go +++ b/app/community/rpc/internal/logic/searchPostsLogic.go @@ -2,6 +2,7 @@ package logic import ( "context" + "errors" "strings" "juwan-backend/app/community/rpc/internal/svc" @@ -29,6 +30,9 @@ func (l *SearchPostsLogic) SearchPosts(in *pb.SearchPostsReq) (*pb.SearchPostsRe if limit <= 0 { limit = 20 } + if limit > 100 { + return nil, errors.New("limit too large") + } offset := in.GetOffset() if offset < 0 { offset = 0 diff --git a/app/game/rpc/internal/logic/searchGamesLogic.go b/app/game/rpc/internal/logic/searchGamesLogic.go index 59c6299..3968130 100644 --- a/app/game/rpc/internal/logic/searchGamesLogic.go +++ b/app/game/rpc/internal/logic/searchGamesLogic.go @@ -27,8 +27,14 @@ func NewSearchGamesLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Searc func (l *SearchGamesLogic) SearchGames(in *pb.SearchGamesReq) (*pb.SearchGamesResp, error) { notFoundErr := entcache.ErrNotFound - if in.Offset < 0 || in.Limit <= 0 || in.Limit > 100 { - return nil, errors.New("invalid pagination parameters") + if in.Limit <= 0 { + in.Limit = 20 + } + if in.Limit > 100 { + return nil, errors.New("limit too large") + } + if in.Offset < 0 { + in.Offset = 0 } all, err := l.svcCtx.GameModelRO.Games.Query().Limit(int(in.Limit)).Offset(int(in.Offset)).All(l.ctx) if err != nil && !errors.As(err, ¬FoundErr) { diff --git a/app/order/rpc/internal/logic/searchOrderStateLogsLogic.go b/app/order/rpc/internal/logic/searchOrderStateLogsLogic.go index 5184285..0430c3c 100644 --- a/app/order/rpc/internal/logic/searchOrderStateLogsLogic.go +++ b/app/order/rpc/internal/logic/searchOrderStateLogsLogic.go @@ -31,9 +31,12 @@ func (l *SearchOrderStateLogsLogic) SearchOrderStateLogs(in *pb.SearchOrderState if in.Limit <= 0 { in.Limit = 20 } - if in.Limit > 1000 { + if in.Limit > 100 { return nil, errors.New("limit too large") } + if in.Offset < 0 { + in.Offset = 0 + } preds := make([]predicate.OrderStateLogs, 0, 8) if in.Id != nil { diff --git a/app/order/rpc/internal/logic/searchOrdersLogic.go b/app/order/rpc/internal/logic/searchOrdersLogic.go index 50dc5c1..5905f16 100644 --- a/app/order/rpc/internal/logic/searchOrdersLogic.go +++ b/app/order/rpc/internal/logic/searchOrdersLogic.go @@ -31,9 +31,12 @@ func (l *SearchOrdersLogic) SearchOrders(in *pb.SearchOrdersReq) (*pb.SearchOrde if in.Limit <= 0 { in.Limit = 20 } - if in.Limit > 1000 { + if in.Limit > 100 { return nil, errors.New("limit too large") } + if in.Offset < 0 { + in.Offset = 0 + } preds := make([]predicate.Orders, 0, 20) if in.Id != nil { diff --git a/app/player/rpc/internal/logic/searchPlayerServicesLogic.go b/app/player/rpc/internal/logic/searchPlayerServicesLogic.go index f5716f5..601abad 100644 --- a/app/player/rpc/internal/logic/searchPlayerServicesLogic.go +++ b/app/player/rpc/internal/logic/searchPlayerServicesLogic.go @@ -25,9 +25,15 @@ func NewSearchPlayerServicesLogic(ctx context.Context, svcCtx *svc.ServiceContex } func (l *SearchPlayerServicesLogic) SearchPlayerServices(in *pb.SearchPlayerServicesReq) (*pb.SearchPlayerServicesResp, error) { - if in.Limit > 1000 { + if in.Limit <= 0 { + in.Limit = 20 + } + if in.Limit > 100 { return nil, errors.New("limit too large") } + if in.Offset < 0 { + in.Offset = 0 + } update := l.svcCtx.PlayerModelRO.PlayerServices.Query() if in.PlayerId != 0 { diff --git a/app/player/rpc/internal/logic/searchPlayersLogic.go b/app/player/rpc/internal/logic/searchPlayersLogic.go index f587a2c..2c81d7b 100644 --- a/app/player/rpc/internal/logic/searchPlayersLogic.go +++ b/app/player/rpc/internal/logic/searchPlayersLogic.go @@ -26,6 +26,18 @@ func NewSearchPlayersLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Sea } func (l *SearchPlayersLogic) SearchPlayers(in *pb.SearchPlayersReq) (*pb.SearchPlayersResp, error) { + if in.Limit == nil || *in.Limit <= 0 { + def := int64(20) + in.Limit = &def + } + if *in.Limit > 100 { + return nil, errors.New("limit too large") + } + if in.Offset == nil || *in.Offset < 0 { + zero := int64(0) + in.Offset = &zero + } + searcher := l.svcCtx.PlayerModelRO.Players.Query() if in.Gender != nil && *in.Gender != 0 { diff --git a/app/shop/rpc/internal/logic/searchShopInvitationsLogic.go b/app/shop/rpc/internal/logic/searchShopInvitationsLogic.go index 88b84bd..1dda542 100644 --- a/app/shop/rpc/internal/logic/searchShopInvitationsLogic.go +++ b/app/shop/rpc/internal/logic/searchShopInvitationsLogic.go @@ -30,9 +30,12 @@ func (l *SearchShopInvitationsLogic) SearchShopInvitations(in *pb.SearchShopInvi if in.Limit <= 0 { in.Limit = 20 } - if in.Limit > 1000 { + if in.Limit > 100 { return nil, errors.New("limit too large") } + if in.Offset < 0 { + in.Offset = 0 + } preds := make([]predicate.ShopInvitations, 0, 8) if in.Id > 0 { diff --git a/app/shop/rpc/internal/logic/searchShopPlayersLogic.go b/app/shop/rpc/internal/logic/searchShopPlayersLogic.go index 8a1a6e6..9e80ff4 100644 --- a/app/shop/rpc/internal/logic/searchShopPlayersLogic.go +++ b/app/shop/rpc/internal/logic/searchShopPlayersLogic.go @@ -30,9 +30,12 @@ func (l *SearchShopPlayersLogic) SearchShopPlayers(in *pb.SearchShopPlayersReq) if in.Limit <= 0 { in.Limit = 20 } - if in.Limit > 1000 { + if in.Limit > 100 { return nil, errors.New("limit too large") } + if in.Offset < 0 { + in.Offset = 0 + } preds := make([]predicate.ShopPlayers, 0, 8) if in.ShopId > 0 { diff --git a/app/shop/rpc/internal/logic/searchShopsLogic.go b/app/shop/rpc/internal/logic/searchShopsLogic.go index 1704dc2..0e07482 100644 --- a/app/shop/rpc/internal/logic/searchShopsLogic.go +++ b/app/shop/rpc/internal/logic/searchShopsLogic.go @@ -34,9 +34,12 @@ func (l *SearchShopsLogic) SearchShops(in *pb.SearchShopsReq) (*pb.SearchShopsRe if in.Limit <= 0 { in.Limit = 20 } - if in.Limit > 1000 { + if in.Limit > 100 { return nil, errors.New("limit too large") } + if in.Offset < 0 { + in.Offset = 0 + } preds := make([]predicate.Shops, 0, 12) if in.Id > 0 { diff --git a/app/user_verifications/rpc/internal/logic/searchUserVerificationsLogic.go b/app/user_verifications/rpc/internal/logic/searchUserVerificationsLogic.go index 17f39bc..9e6a347 100644 --- a/app/user_verifications/rpc/internal/logic/searchUserVerificationsLogic.go +++ b/app/user_verifications/rpc/internal/logic/searchUserVerificationsLogic.go @@ -28,9 +28,14 @@ func NewSearchUserVerificationsLogic(ctx context.Context, svcCtx *svc.ServiceCon } func (l *SearchUserVerificationsLogic) SearchUserVerifications(in *pb.SearchUserVerificationsReq) (*pb.SearchUserVerificationsResp, error) { - if in.Limit > 1000 { - logx.Errorf("Limit exceeds max limit: %d", in.Limit) - return nil, errors.New("limit exceeds max limit") + if in.Limit <= 0 { + in.Limit = 20 + } + if in.Limit > 100 { + return nil, errors.New("limit too large") + } + if in.Offset < 0 { + in.Offset = 0 } predicates := make([]predicate.UserVerifications, 0, 3) if in.UserId != 0 { diff --git a/app/users/rpc/internal/logic/searchUsersLogic.go b/app/users/rpc/internal/logic/searchUsersLogic.go index 22e8354..49aa109 100644 --- a/app/users/rpc/internal/logic/searchUsersLogic.go +++ b/app/users/rpc/internal/logic/searchUsersLogic.go @@ -31,12 +31,15 @@ var SearUsersErr = errors.New("search users failed") func (l *SearchUsersLogic) SearchUsers(in *pb.SearchUsersReq) (out *pb.SearchUsersResp, err error) { if in.Offset == nil || *in.Offset < 0 { - logx.Errorf("invalid offset: %v", in.Offset) - return nil, errors.New("invalid offset") + zero := int64(0) + in.Offset = &zero } - if *in.Limit > 1000 { - logx.Errorf("Limit exceeds max limit: %d", in.Limit) - return nil, errors.New("limit exceeds max limit") + if in.Limit == nil || *in.Limit <= 0 { + def := int64(20) + in.Limit = &def + } + if *in.Limit > 100 { + return nil, errors.New("limit too large") } user, err := l.svcCtx.UsersModelRO.Users.Query(). Where(users.Or( diff --git a/app/wallet/rpc/internal/logic/searchWalletTransactionsLogic.go b/app/wallet/rpc/internal/logic/searchWalletTransactionsLogic.go index cb68a16..1d9be47 100644 --- a/app/wallet/rpc/internal/logic/searchWalletTransactionsLogic.go +++ b/app/wallet/rpc/internal/logic/searchWalletTransactionsLogic.go @@ -34,6 +34,12 @@ func (l *SearchWalletTransactionsLogic) SearchWalletTransactions(in *pb.SearchWa if in.Limit <= 0 { in.Limit = 20 } + if in.Limit > 100 { + return nil, errors.New("limit too large") + } + if in.Offset < 0 { + in.Offset = 0 + } preds := make([]predicate.WalletTransactions, 0, 8) if in.Id > 0 {