|
|
|
@@ -6,8 +6,10 @@ import ( |
|
|
|
"code.gitea.io/gitea/modules/redis/redis_client" |
|
|
|
"code.gitea.io/gitea/modules/redis/redis_key" |
|
|
|
"code.gitea.io/gitea/modules/redis/redis_lock" |
|
|
|
"code.gitea.io/gitea/services/reward/limiter" |
|
|
|
"encoding/json" |
|
|
|
"errors" |
|
|
|
"fmt" |
|
|
|
"time" |
|
|
|
) |
|
|
|
|
|
|
|
@@ -181,3 +183,46 @@ func DelTaskConfig(id int64, doer *models.User) error { |
|
|
|
redis_client.Del(redis_key.TaskConfigList()) |
|
|
|
return nil |
|
|
|
} |
|
|
|
|
|
|
|
func GetPointRule() (*models.PointRule, error) { |
|
|
|
r, err := limiter.GetSingleDailyPointLimitConfig() |
|
|
|
if err != nil { |
|
|
|
return nil, err |
|
|
|
} |
|
|
|
limiters, err := limiter.GetLimitersByLimitType(models.LimitTypeTask) |
|
|
|
if err != nil { |
|
|
|
return nil, err |
|
|
|
} |
|
|
|
limiterMap := make(map[string]*models.LimitConfig, 0) |
|
|
|
for i := 0; i < len(limiters); i++ { |
|
|
|
limiterMap[limiters[i].LimitCode] = &limiters[i] |
|
|
|
} |
|
|
|
|
|
|
|
taskConfigs, err := GetTaskConfigList() |
|
|
|
if err != nil { |
|
|
|
return nil, err |
|
|
|
} |
|
|
|
taskRules := make([]models.TaskRule, len(taskConfigs)) |
|
|
|
|
|
|
|
for i, taskConfig := range taskConfigs { |
|
|
|
rule := models.TaskRule{ |
|
|
|
TaskCode: taskConfig.TaskCode, |
|
|
|
AwardType: taskConfig.AwardType, |
|
|
|
AwardAmount: taskConfig.AwardAmount, |
|
|
|
} |
|
|
|
limiter := limiterMap[fmt.Sprint(taskConfig.TaskCode)] |
|
|
|
if limiter != nil { |
|
|
|
rule.RefreshRate = limiter.RefreshRate |
|
|
|
rule.LimitNum = limiter.LimitNum |
|
|
|
} |
|
|
|
taskRules[i] = rule |
|
|
|
} |
|
|
|
|
|
|
|
pointRule := &models.PointRule{ |
|
|
|
TaskRules: taskRules, |
|
|
|
} |
|
|
|
if r != nil { |
|
|
|
pointRule.UserDailyLimit = r.LimitNum |
|
|
|
} |
|
|
|
return pointRule, nil |
|
|
|
} |