fix: 翻页

This commit is contained in:
2025-05-07 14:36:19 +08:00
parent a063c2eae5
commit 2cc980266d
4 changed files with 55 additions and 25 deletions

View File

@@ -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) { func (l *GetStakeLogListLogic) GetStakeLogList(req *types.GetStakeLogListReq) (resp *types.GetStakeLogListResp, err error) {
uid := utils.GetUidUint(l.ctx) 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 { if err != nil {
l.Errorw("get stake log list failed", logx.Field("err", err), logx.Field("uid", uid)) l.Errorw("get stake log list failed", logx.Field("err", err), logx.Field("uid", uid))
return nil, errs.New(errs.ErrDatabaseOperate, err) return nil, errs.New(errs.ErrDatabaseOperate, err)
@@ -47,6 +47,6 @@ func (l *GetStakeLogListLogic) GetStakeLogList(req *types.GetStakeLogListReq) (r
} }
return &types.GetStakeLogListResp{ return &types.GetStakeLogListResp{
List: lss, List: lss,
Total: len(lss), Total: int(total),
}, nil }, nil
} }

View File

@@ -30,7 +30,7 @@ func NewTransferCastileToGameListLogic(ctx context.Context, svcCtx *svc.ServiceC
func (l *TransferCastileToGameListLogic) TransferCastileToGameList(req *types.TransferCastileToGameListReq) (resp *types.TransferCastileToGameListResp, err error) { func (l *TransferCastileToGameListLogic) TransferCastileToGameList(req *types.TransferCastileToGameListReq) (resp *types.TransferCastileToGameListResp, err error) {
uid := utils.GetUidUint(l.ctx) 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 { if err != nil {
l.Errorw("get castile log list failed", logx.Field("err", err), logx.Field("uid", uid)) l.Errorw("get castile log list failed", logx.Field("err", err), logx.Field("uid", uid))
return nil, errs.New(errs.ErrDatabaseOperate, err) return nil, errs.New(errs.ErrDatabaseOperate, err)
@@ -47,6 +47,6 @@ func (l *TransferCastileToGameListLogic) TransferCastileToGameList(req *types.Tr
} }
return &types.TransferCastileToGameListResp{ return &types.TransferCastileToGameListResp{
List: lss, List: lss,
Total: len(lss), Total: int(count),
}, nil }, nil
} }

View File

@@ -16,7 +16,7 @@ type (
nhCastileTokenLogModel nhCastileTokenLogModel
WithSession(session sqlx.Session) NhCastileTokenLogModel WithSession(session sqlx.Session) NhCastileTokenLogModel
UpdateStatus(ctx context.Context, status uint, id uint) error 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 { customNhCastileTokenLogModel struct {
@@ -41,20 +41,35 @@ func (m *customNhCastileTokenLogModel) UpdateStatus(ctx context.Context, status
return err 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 query string
var result []*NhCastileTokenLog
var err error var args = []any{uid}
if roleId == 0 { if roleId == 0 {
query = fmt.Sprintf("select %s from %s where uid = ? order by id desc limit ?, ?", nhCastileTokenLogRows, m.table) query = "select %s from %s where uid = ?"
err = m.conn.QueryRowsCtx(ctx, &result, query, uid, (page-1)*pageSize, pageSize)
} else { } else {
query = fmt.Sprintf("select %s from %s where uid = ? and role_id = ? order by id desc limit ?, ?", nhCastileTokenLogRows, m.table) query = "select %s from %s where uid = ? and role_id = ?"
err = m.conn.QueryRowsCtx(ctx, &result, query, uid, roleId, (page-1)*pageSize, pageSize) 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) { if err != nil && !errors.Is(err, sqlx.ErrNotFound) {
return nil, err return nil, 0, err
} }
return result, nil
return result, count, nil
} }

View File

@@ -15,7 +15,7 @@ type (
NhStakePointsLogModel interface { NhStakePointsLogModel interface {
nhStakePointsLogModel nhStakePointsLogModel
WithSession(session sqlx.Session) 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 { 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 query string
var result []*NhStakePointsLog var args = []any{uid}
var err error
if roleId == 0 { if roleId == 0 {
query = fmt.Sprintf("select %s from %s where uid = ? order by id desc limit ?, ?", nhStakePointsLogRows, m.table) query = "select %s from %s where uid = ?"
err = m.conn.QueryRowsCtx(ctx, &result, query, uid, (page-1)*pageSize, pageSize)
} else { } else {
query = fmt.Sprintf("select %s from %s where uid = ? and role_id = ? order by id desc limit ?, ?", nhStakePointsLogRows, m.table) query = "select %s from %s where uid = ? and role_id = ?"
err = m.conn.QueryRowsCtx(ctx, &result, query, uid, roleId, (page-1)*pageSize, pageSize) 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) { offset := (page - 1) * pageSize
return nil, err 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. // NewNhStakePointsLogModel returns a model for the database table.