nft质押任务逻辑

This commit is contained in:
lianghuanjie
2024-12-27 18:06:13 +08:00
parent a22f73df20
commit 31a674080d
39 changed files with 1532 additions and 99 deletions

View File

@@ -0,0 +1,64 @@
package task
import (
"context"
"errors"
"nova_task/internal/model"
"nova_task/internal/pkg/errs"
"nova_task/internal/pkg/utils"
"time"
"nova_task/internal/svc"
"nova_task/internal/types"
"github.com/zeromicro/go-zero/core/logx"
)
type GetStakeTaskDetailLogic struct {
logx.Logger
ctx context.Context
svcCtx *svc.ServiceContext
}
// NewGetStakeTaskDetailLogic 质押任务详情
func NewGetStakeTaskDetailLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetStakeTaskDetailLogic {
return &GetStakeTaskDetailLogic{
Logger: logx.WithContext(ctx),
ctx: ctx,
svcCtx: svcCtx,
}
}
func (l *GetStakeTaskDetailLogic) GetStakeTaskDetail() (*types.StakeTaskDetail, error) {
uid := utils.GetUidUint(l.ctx)
start, end, err := l.svcCtx.ConfigModel.GetNftStakeTaskOpenDate(l.ctx)
if err != nil {
if errors.Is(err, model.ErrNotFound) {
return nil, errs.New(errs.ErrTaskOpenDateNotSet, "task open date not set")
}
l.Errorw("get nft stake task open date failed", logx.Field("err", err))
return nil, errs.New(errs.ErrDatabaseOperate, err)
}
taskConf, err := l.svcCtx.ConfigModel.GetNftStakeTaskConf(l.ctx)
if err != nil {
if errors.Is(err, model.ErrNotFound) {
return nil, errs.New(errs.ErrTaskConfNotSet, "task config not set")
}
l.Errorw("get nft stake task conf failed", logx.Field("err", err))
return nil, errs.New(errs.ErrDatabaseOperate, err)
}
var gameBonus int
if l.svcCtx.GamePitModel.UserExist(l.ctx, uid) {
gameBonus = taskConf.OccupyPercent
}
return &types.StakeTaskDetail{
StartDate: start.Format(time.DateOnly),
EndDate: end.Format(time.DateOnly),
CountDown: utils.TodayRemainSeconds(),
ProduceTokensToday: 0,
GameBonus: gameBonus,
CanReceiveTokens: 0,
}, nil
}