feat: 拉取积分质押操作记录的接口
This commit is contained in:
52
internal/logic/stakepoint/get_stake_log_list_logic.go
Normal file
52
internal/logic/stakepoint/get_stake_log_list_logic.go
Normal 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
|
||||
}
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user