diff --git a/internal/logic/task/get_stake_task_detail_logic.go b/internal/logic/task/get_stake_task_detail_logic.go index 65c48fd..8f6bdb7 100644 --- a/internal/logic/task/get_stake_task_detail_logic.go +++ b/internal/logic/task/get_stake_task_detail_logic.go @@ -50,10 +50,6 @@ func (l *GetStakeTaskDetailLogic) GetStakeTaskDetail() (*types.StakeTaskDetail, 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 - } stakeNfts, err := l.svcCtx.StakeNftModel.FindByUid(l.ctx, uid) if err != nil { @@ -72,21 +68,28 @@ func (l *GetStakeTaskDetailLogic) GetStakeTaskDetail() (*types.StakeTaskDetail, } } var canReceiveTokens float64 - if gameBonus > 0 { - canReceiveTokens = produceTokensToday * float64(100+gameBonus) / 100 - } else { - canReceiveTokens = produceTokensToday + var gameBonus int + if produceTokensToday > 0 { + if l.svcCtx.GamePitModel.UserExist(l.ctx, uid) { + gameBonus = taskConf.OccupyPercent + } + if gameBonus > 0 { + canReceiveTokens = produceTokensToday * float64(100+gameBonus) / 100 + } else { + canReceiveTokens = produceTokensToday + } } - awardSeq := cast.ToInt(time.Now().Format("20060102")) - coefficient, err := l.svcCtx.StakeRewardModel.GetRandomCoefficientByUid(l.ctx, uid, awardSeq, taskConf.MinCoefficient, taskConf.MaxCoefficient) - if err != nil { - l.Errorw("get random coefficient failed", logx.Field("err", err), logx.Field("uid", uid), logx.Field("awardSeq", awardSeq)) - return nil, errs.New(errs.ErrDatabaseOperate, err) + if canReceiveTokens > 0 { + awardSeq := cast.ToInt(time.Now().Format("20060102")) + coefficient, err := l.svcCtx.StakeRewardModel.GetRandomCoefficientByUid(l.ctx, uid, awardSeq, taskConf.MinCoefficient, taskConf.MaxCoefficient) + if err != nil { + l.Errorw("get random coefficient failed", logx.Field("err", err), logx.Field("uid", uid), logx.Field("awardSeq", awardSeq)) + return nil, errs.New(errs.ErrDatabaseOperate, err) + } + canReceiveTokens *= coefficient } - canReceiveTokens *= coefficient - totalIncomeReward, err := l.svcCtx.StakeRewardModel.CountReward(l.ctx, uid) if err != nil { l.Errorw("count reward failed", logx.Field("err", err), logx.Field("uid", uid))