feat: 拉取积分质押操作记录的接口

This commit is contained in:
2025-04-08 20:25:23 +08:00
parent 8119bcefdc
commit 85daa4b093
12 changed files with 500 additions and 11 deletions

View File

@@ -0,0 +1,52 @@
package stakepoint
import (
"context"
"nova_task/internal/pkg/errs"
"nova_task/internal/pkg/utils"
"nova_task/internal/svc"
"nova_task/internal/types"
"github.com/zeromicro/go-zero/core/logx"
)
type GetStakeLogListLogic struct {
logx.Logger
ctx context.Context
svcCtx *svc.ServiceContext
}
// NewGetStakeLogListLogic 积分质押日志列表
func NewGetStakeLogListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetStakeLogListLogic {
return &GetStakeLogListLogic{
Logger: logx.WithContext(ctx),
ctx: ctx,
svcCtx: svcCtx,
}
}
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)
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)
}
var lss []types.StakeLog
for _, ll := range ls {
lss = append(lss, types.StakeLog{
Id: ll.Id,
RoleID: ll.RoleId,
LevelId: ll.LevelId,
Level: ll.Level,
Points: ll.Points,
Action: ll.Action,
CreatedAt: ll.CreatedAt.Unix(),
})
}
return &types.GetStakeLogListResp{
List: lss,
Total: len(lss),
}, nil
}

View File

@@ -33,7 +33,7 @@ func NewStakePointLogic(ctx context.Context, svcCtx *svc.ServiceContext) *StakeP
}
func (l *StakePointLogic) StakePoint(req *types.StakePointReq) error {
uid := utils.GetUid(l.ctx)
uid := utils.GetUidUint(l.ctx)
r, err := l.svcCtx.RoleModel.FindOneByRoleId(l.ctx, req.RoleID)
if err != nil {
if errors.Is(err, model.ErrNotFound) {
@@ -50,7 +50,7 @@ func (l *StakePointLogic) StakePoint(req *types.StakePointReq) error {
l.Errorw("find user error", logx.Field("err", err), logx.Field("role_id", req.RoleID), logx.Field("uid", uid), logx.Field("level_id", req.LevelId), logx.Field("action", req.Action))
return errs.New(errs.ErrDatabaseOperate, err)
}
if u.Id != uint(uid) {
if u.Id != uid {
return errs.New(errs.ErrRoleNotFound, "role not exist")
}
lv, err := l.svcCtx.StakePointConfigModel.FindOne(l.ctx, uint(req.LevelId))
@@ -73,12 +73,12 @@ func (l *StakePointLogic) StakePoint(req *types.StakePointReq) error {
return errs.New(errs.ErrPointsStakeExist, "stake points exist")
}
err = l.svcCtx.DBConn.TransactCtx(l.ctx, func(ctx context.Context, session sqlx.Session) error {
err = l.svcCtx.AddUserAssetWithSession(ctx, session, uint(uid), req.RoleID, consts.AssetType_Points, "", decimal.NewFromInt(int64(-lv.Points)), "stake points", 0, 0, false)
err = l.svcCtx.AddUserAssetWithSession(ctx, session, uid, req.RoleID, consts.AssetType_Points, "", decimal.NewFromInt(int64(-lv.Points)), "stake points", 0, 0, false)
if err != nil {
return err
}
_, err = l.svcCtx.StakePointsModel.WithSession(session).Insert(l.ctx, &model.NhStakePoints{
Uid: uint(uid),
_, err = l.svcCtx.StakePointsModel.WithSession(session).Insert(ctx, &model.NhStakePoints{
Uid: uid,
RoleId: uint64(req.RoleID),
LevelId: lv.Id,
Level: lv.Level,
@@ -90,6 +90,18 @@ func (l *StakePointLogic) StakePoint(req *types.StakePointReq) error {
if err != nil {
return errs.New(errs.ErrDatabaseOperate, err)
}
_, err = l.svcCtx.StakePointsLogModel.WithSession(session).Insert(ctx, &model.NhStakePointsLog{
Uid: uid,
RoleId: uint64(req.RoleID),
LevelId: lv.Id,
Level: lv.Level,
Points: int(lv.Points),
Action: 1,
})
if err != nil {
l.Errorw("stake points log error", logx.Field("err", err), logx.Field("role_id", req.RoleID), logx.Field("uid", uid), logx.Field("level_id", req.LevelId), logx.Field("action", req.Action))
return errs.New(errs.ErrDatabaseOperate, err)
}
_, err := l.svcCtx.GameAction(ctx, req.RoleID, consts.GameActionStakePoints, map[string]any{
"level": lv.Level,
"operation": req.Action,
@@ -125,7 +137,7 @@ func (l *StakePointLogic) StakePoint(req *types.StakePointReq) error {
}
err = l.svcCtx.DBConn.TransactCtx(l.ctx, func(ctx context.Context, session sqlx.Session) error {
points := lv.Points - clvConfig.Points
err = l.svcCtx.AddUserAssetWithSession(ctx, session, uint(uid), req.RoleID, consts.AssetType_Points, "", decimal.NewFromInt(int64(-points)), "stake points", 0, 0, false)
err = l.svcCtx.AddUserAssetWithSession(ctx, session, uid, req.RoleID, consts.AssetType_Points, "", decimal.NewFromInt(int64(-points)), "stake points", 0, 0, false)
if err != nil {
return err
}
@@ -137,8 +149,8 @@ func (l *StakePointLogic) StakePoint(req *types.StakePointReq) error {
return errs.New(errs.ErrDatabaseOperate, err)
}
end = start.Add(time.Duration(lv.Days.Mul(decimal.NewFromInt(int64(time.Hour*24))).IntPart()) - start.Sub(clv.StartTime))
_, err = spm.Insert(l.ctx, &model.NhStakePoints{
Uid: uint(uid),
_, err = spm.Insert(ctx, &model.NhStakePoints{
Uid: uid,
RoleId: uint64(req.RoleID),
LevelId: lv.Id,
Level: lv.Level,
@@ -150,6 +162,19 @@ func (l *StakePointLogic) StakePoint(req *types.StakePointReq) error {
if err != nil {
return errs.New(errs.ErrDatabaseOperate, err)
}
_, err = l.svcCtx.StakePointsLogModel.WithSession(session).Insert(ctx, &model.NhStakePointsLog{
Uid: uid,
RoleId: uint64(req.RoleID),
LevelId: lv.Id,
Level: lv.Level,
Points: int(points),
Action: 2,
})
if err != nil {
l.Errorw("stake points log error", logx.Field("err", err), logx.Field("role_id", req.RoleID), logx.Field("uid", uid), logx.Field("level_id", req.LevelId), logx.Field("action", req.Action))
return errs.New(errs.ErrDatabaseOperate, err)
}
_, err = l.svcCtx.GameAction(ctx, req.RoleID, consts.GameActionStakePoints, map[string]any{
"level": lv.Level,
"operation": req.Action,
@@ -191,7 +216,7 @@ func (l *StakePointLogic) StakePoint(req *types.StakePointReq) error {
err = l.svcCtx.DBConn.TransactCtx(l.ctx, func(ctx context.Context, session sqlx.Session) error {
points := lv.Points - clvConfig.Points
if points > 0 {
err = l.svcCtx.AddUserAssetWithSession(ctx, session, uint(uid), req.RoleID, consts.AssetType_Points, "", decimal.NewFromInt(int64(-points)), "stake points", 0, 0, false)
err = l.svcCtx.AddUserAssetWithSession(ctx, session, uid, req.RoleID, consts.AssetType_Points, "", decimal.NewFromInt(int64(-points)), "stake points", 0, 0, false)
if err != nil {
return err
}
@@ -204,8 +229,8 @@ func (l *StakePointLogic) StakePoint(req *types.StakePointReq) error {
return errs.New(errs.ErrDatabaseOperate, err)
}
end = clv.EndTime.Add(time.Duration(lv.Days.Mul(decimal.NewFromInt(int64(time.Hour * 24))).IntPart()))
_, err = spm.Insert(l.ctx, &model.NhStakePoints{
Uid: uint(uid),
_, err = spm.Insert(ctx, &model.NhStakePoints{
Uid: uid,
RoleId: uint64(req.RoleID),
LevelId: lv.Id,
Level: lv.Level,
@@ -217,6 +242,18 @@ func (l *StakePointLogic) StakePoint(req *types.StakePointReq) error {
if err != nil {
return errs.New(errs.ErrDatabaseOperate, err)
}
_, err = l.svcCtx.StakePointsLogModel.WithSession(session).Insert(ctx, &model.NhStakePointsLog{
Uid: uid,
RoleId: uint64(req.RoleID),
LevelId: lv.Id,
Level: lv.Level,
Points: int(points),
Action: 3,
})
if err != nil {
l.Errorw("stake points log error", logx.Field("err", err), logx.Field("role_id", req.RoleID), logx.Field("uid", uid), logx.Field("level_id", req.LevelId), logx.Field("action", req.Action))
return errs.New(errs.ErrDatabaseOperate, err)
}
_, err = l.svcCtx.GameAction(ctx, req.RoleID, consts.GameActionStakePoints, map[string]any{
"level": lv.Level,
"operation": req.Action,