From 2cc980266df9a68c0edcbd53bd8479a0ad18a57a Mon Sep 17 00:00:00 2001 From: jager Date: Wed, 7 May 2025 14:36:19 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=BF=BB=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../stakepoint/get_stake_log_list_logic.go | 4 +- .../transfer_castile_to_game_list_logic.go | 4 +- internal/model/nh_castile_token_log_model.go | 35 +++++++++++++----- internal/model/nh_stake_points_log_model.go | 37 +++++++++++++------ 4 files changed, 55 insertions(+), 25 deletions(-) diff --git a/internal/logic/stakepoint/get_stake_log_list_logic.go b/internal/logic/stakepoint/get_stake_log_list_logic.go index 9262179..b109d8f 100644 --- a/internal/logic/stakepoint/get_stake_log_list_logic.go +++ b/internal/logic/stakepoint/get_stake_log_list_logic.go @@ -28,7 +28,7 @@ func NewGetStakeLogListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *G func (l *GetStakeLogListLogic) GetStakeLogList(req *types.GetStakeLogListReq) (resp *types.GetStakeLogListResp, err error) { uid := utils.GetUidUint(l.ctx) - ls, err := l.svcCtx.StakePointsLogModel.List(l.ctx, uid, req.RoleID, req.Page, req.Size) + ls, total, err := l.svcCtx.StakePointsLogModel.List(l.ctx, uid, req.RoleID, req.Page, req.Size) if err != nil { l.Errorw("get stake log list failed", logx.Field("err", err), logx.Field("uid", uid)) return nil, errs.New(errs.ErrDatabaseOperate, err) @@ -47,6 +47,6 @@ func (l *GetStakeLogListLogic) GetStakeLogList(req *types.GetStakeLogListReq) (r } return &types.GetStakeLogListResp{ List: lss, - Total: len(lss), + Total: int(total), }, nil } diff --git a/internal/logic/transfercastile/transfer_castile_to_game_list_logic.go b/internal/logic/transfercastile/transfer_castile_to_game_list_logic.go index 346e977..392bd75 100644 --- a/internal/logic/transfercastile/transfer_castile_to_game_list_logic.go +++ b/internal/logic/transfercastile/transfer_castile_to_game_list_logic.go @@ -30,7 +30,7 @@ func NewTransferCastileToGameListLogic(ctx context.Context, svcCtx *svc.ServiceC func (l *TransferCastileToGameListLogic) TransferCastileToGameList(req *types.TransferCastileToGameListReq) (resp *types.TransferCastileToGameListResp, err error) { uid := utils.GetUidUint(l.ctx) - ls, err := l.svcCtx.CastileTokenLogModel.List(l.ctx, uid, uint64(req.RoleID), req.Page, req.Size) + ls, count, err := l.svcCtx.CastileTokenLogModel.List(l.ctx, uid, uint64(req.RoleID), req.Page, req.Size) if err != nil { l.Errorw("get castile log list failed", logx.Field("err", err), logx.Field("uid", uid)) return nil, errs.New(errs.ErrDatabaseOperate, err) @@ -47,6 +47,6 @@ func (l *TransferCastileToGameListLogic) TransferCastileToGameList(req *types.Tr } return &types.TransferCastileToGameListResp{ List: lss, - Total: len(lss), + Total: int(count), }, nil } diff --git a/internal/model/nh_castile_token_log_model.go b/internal/model/nh_castile_token_log_model.go index 4b4beda..083d0f5 100644 --- a/internal/model/nh_castile_token_log_model.go +++ b/internal/model/nh_castile_token_log_model.go @@ -16,7 +16,7 @@ type ( nhCastileTokenLogModel WithSession(session sqlx.Session) NhCastileTokenLogModel UpdateStatus(ctx context.Context, status uint, id uint) error - List(ctx context.Context, uid uint, roleId uint64, page, pageSize int) ([]*NhCastileTokenLog, error) + List(ctx context.Context, uid uint, roleId uint64, page, pageSize int) ([]*NhCastileTokenLog, int64, error) } customNhCastileTokenLogModel struct { @@ -41,20 +41,35 @@ func (m *customNhCastileTokenLogModel) UpdateStatus(ctx context.Context, status return err } -func (m *customNhCastileTokenLogModel) List(ctx context.Context, uid uint, roleId uint64, page, pageSize int) ([]*NhCastileTokenLog, error) { +func (m *customNhCastileTokenLogModel) List(ctx context.Context, uid uint, roleId uint64, page, pageSize int) ([]*NhCastileTokenLog, int64, error) { var query string - var result []*NhCastileTokenLog - var err error + + var args = []any{uid} if roleId == 0 { - query = fmt.Sprintf("select %s from %s where uid = ? order by id desc limit ?, ?", nhCastileTokenLogRows, m.table) - err = m.conn.QueryRowsCtx(ctx, &result, query, uid, (page-1)*pageSize, pageSize) + query = "select %s from %s where uid = ?" } else { - query = fmt.Sprintf("select %s from %s where uid = ? and role_id = ? order by id desc limit ?, ?", nhCastileTokenLogRows, m.table) - err = m.conn.QueryRowsCtx(ctx, &result, query, uid, roleId, (page-1)*pageSize, pageSize) + query = "select %s from %s where uid = ? and role_id = ?" + args = append(args, roleId) + } + var err error + var count int64 + var result []*NhCastileTokenLog + err = m.conn.QueryRowCtx(ctx, &count, fmt.Sprintf(query, "count(*) as count", m.table), args...) + if err != nil { + return nil, 0, err + } + offset := (page - 1) * pageSize + if offset >= int(count) { + return result, count, nil } + query += " order by id desc limit ?, ?" + args = append(args, offset, pageSize) + + err = m.conn.QueryRowsCtx(ctx, &result, fmt.Sprintf(query, nhCastileTokenLogRows, m.table), args...) if err != nil && !errors.Is(err, sqlx.ErrNotFound) { - return nil, err + return nil, 0, err } - return result, nil + + return result, count, nil } diff --git a/internal/model/nh_stake_points_log_model.go b/internal/model/nh_stake_points_log_model.go index 29121f4..5ab6d82 100755 --- a/internal/model/nh_stake_points_log_model.go +++ b/internal/model/nh_stake_points_log_model.go @@ -15,7 +15,7 @@ type ( NhStakePointsLogModel interface { nhStakePointsLogModel WithSession(session sqlx.Session) NhStakePointsLogModel - List(ctx context.Context, uid uint, roleId uint64, page, pageSize int) ([]*NhStakePointsLog, error) + List(ctx context.Context, uid uint, roleId uint64, page, pageSize int) ([]*NhStakePointsLog, int64, error) } customNhStakePointsLogModel struct { @@ -23,22 +23,37 @@ type ( } ) -func (m *customNhStakePointsLogModel) List(ctx context.Context, uid uint, roleId uint64, page, pageSize int) ([]*NhStakePointsLog, error) { +func (m *customNhStakePointsLogModel) List(ctx context.Context, uid uint, roleId uint64, page, pageSize int) ([]*NhStakePointsLog, int64, error) { var query string - var result []*NhStakePointsLog - var err error + var args = []any{uid} if roleId == 0 { - query = fmt.Sprintf("select %s from %s where uid = ? order by id desc limit ?, ?", nhStakePointsLogRows, m.table) - err = m.conn.QueryRowsCtx(ctx, &result, query, uid, (page-1)*pageSize, pageSize) + query = "select %s from %s where uid = ?" } else { - query = fmt.Sprintf("select %s from %s where uid = ? and role_id = ? order by id desc limit ?, ?", nhStakePointsLogRows, m.table) - err = m.conn.QueryRowsCtx(ctx, &result, query, uid, roleId, (page-1)*pageSize, pageSize) + query = "select %s from %s where uid = ? and role_id = ?" + args = append(args, roleId) + } + var err error + var count int64 + var result []*NhStakePointsLog + err = m.conn.QueryRowCtx(ctx, &count, fmt.Sprintf(query, "count(*) as count", m.table), args...) + if err != nil { + return nil, 0, err } - if err != nil && !errors.Is(err, sqlx.ErrNotFound) { - return nil, err + offset := (page - 1) * pageSize + if offset >= int(count) { + return result, count, nil } - return result, nil + + query += " order by id desc limit ?, ?" + args = append(args, offset, pageSize) + + err = m.conn.QueryRowsCtx(ctx, &result, query, args...) + + if err != nil && !errors.Is(err, sqlx.ErrNotFound) { + return nil, count, err + } + return result, count, nil } // NewNhStakePointsLogModel returns a model for the database table.