Browse Source

#2225

fix bug
tags/v1.22.9.2^2
chenyifan01 3 years ago
parent
commit
45b1c2a24f
7 changed files with 133 additions and 10 deletions
  1. +3
    -2
      models/cloudbrain.go
  2. +11
    -0
      models/limit_config.go
  3. +40
    -1
      models/task_config.go
  4. +1
    -1
      routers/routes/routes.go
  5. +20
    -3
      routers/task/config.go
  6. +11
    -0
      services/reward/limiter/limiter.go
  7. +47
    -3
      services/task/task_config.go

+ 3
- 2
models/cloudbrain.go View File

@@ -181,6 +181,7 @@ type Cloudbrain struct {


type CloudbrainShow struct { type CloudbrainShow struct {
ID int64 ID int64
JobID string
RepoFullName string RepoFullName string
Type int Type int
JobType string JobType string
@@ -201,8 +202,8 @@ type CloudbrainShow4Action struct {


func (task *Cloudbrain) ToShow() *CloudbrainShow { func (task *Cloudbrain) ToShow() *CloudbrainShow {
c := &CloudbrainShow{ c := &CloudbrainShow{
ID: task.ID,
ID: task.ID,
JobID: task.JobID,
JobType: task.JobType, JobType: task.JobType,
Type: task.Type, Type: task.Type,
DisplayJobName: task.DisplayJobName, DisplayJobName: task.DisplayJobName,


+ 11
- 0
models/limit_config.go View File

@@ -102,6 +102,17 @@ func GetLimitConfigByLimitType(limitType LimitType) ([]LimitConfig, error) {
return r, nil return r, nil
} }


func GetLimitersByLimitTypeWithDeleted(limitType LimitType) ([]LimitConfig, error) {
r := make([]LimitConfig, 0)
err := x.Unscoped().Where(" limit_type = ?", limitType.Name()).Find(&r)
if err != nil {
return nil, err
} else if len(r) == 0 {
return nil, ErrRecordNotExist{}
}
return r, nil
}

func AddLimitConfig(l *LimitConfig) error { func AddLimitConfig(l *LimitConfig) error {
sess := x.NewSession() sess := x.NewSession()
defer sess.Close() defer sess.Close()


+ 40
- 1
models/task_config.go View File

@@ -27,7 +27,7 @@ type TaskConfigWithLimit struct {
TaskCode string `binding:"Required;MaxSize(256)"` TaskCode string `binding:"Required;MaxSize(256)"`
Tittle string Tittle string
AwardType string AwardType string
AwardAmount int64 `binding:"Required;MaxSize(256)"`
AwardAmount int64
Creator string Creator string
CreatedUnix timeutil.TimeStamp CreatedUnix timeutil.TimeStamp
Limiters []*LimitConfigVO Limiters []*LimitConfigVO
@@ -63,6 +63,17 @@ func GetTaskConfigList() ([]*TaskConfig, error) {
} }
return r, nil return r, nil
} }
func GetTaskConfigPageWithDeleted(opt ListOptions) ([]*TaskConfig, error) {
r := make([]*TaskConfig, 0)
err := x.Unscoped().Limit(opt.PageSize, (opt.Page-1)*opt.PageSize).OrderBy("deleted_at asc,id desc").Find(&r)
if err != nil {
return nil, err
}
if len(r) == 0 {
return nil, ErrRecordNotExist{}
}
return r, nil
}


func AddTaskConfig(config TaskConfigWithLimit, doer *User) error { func AddTaskConfig(config TaskConfigWithLimit, doer *User) error {
sess := x.NewSession() sess := x.NewSession()
@@ -128,3 +139,31 @@ func AddTaskConfig(config TaskConfigWithLimit, doer *User) error {
sess.Commit() sess.Commit()
return nil return nil
} }

func DelTaskConfig(taskCode string) error {
sess := x.NewSession()
defer sess.Close()

//delete old task config
p := &TaskConfig{
TaskCode: taskCode,
}
_, err := sess.Delete(p)
if err != nil {
sess.Rollback()
return err
}

//delete old limiter config
lp := &LimitConfig{
LimitType: LimitTypeTask.Name(),
LimitCode: taskCode,
}
_, err = sess.Delete(lp)
if err != nil {
sess.Rollback()
return err
}
sess.Commit()
return nil
}

+ 1
- 1
routers/routes/routes.go View File

@@ -613,8 +613,8 @@ func RegisterRoutes(m *macaron.Macaron) {


m.Group("/task/config", func() { m.Group("/task/config", func() {
m.Get("/list", task.GetTaskConfigList) m.Get("/list", task.GetTaskConfigList)
m.Post("/add", bindIgnErr(models.TaskConfigWithLimit{}), task.AddTaskConfig)
m.Post("/add/batch", bindIgnErr(models.BatchLimitConfigVO{}), task.BatchAddTaskConfig) m.Post("/add/batch", bindIgnErr(models.BatchLimitConfigVO{}), task.BatchAddTaskConfig)
m.Post("/^:action(new|edit|del)$", bindIgnErr(models.TaskConfigWithLimit{}), task.OperateTaskConfig)
}) })
}, operationReq) }, operationReq)
// ***** END: Operation ***** // ***** END: Operation *****


+ 20
- 3
routers/task/config.go View File

@@ -3,13 +3,16 @@ package task
import ( import (
"code.gitea.io/gitea/models" "code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/context"
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/routers/response" "code.gitea.io/gitea/routers/response"
"code.gitea.io/gitea/services/task" "code.gitea.io/gitea/services/task"
"errors"
"net/http" "net/http"
) )


func GetTaskConfigList(ctx *context.Context) { func GetTaskConfigList(ctx *context.Context) {
r, err := task.GetTaskConfigWithLimitList()
page := ctx.QueryInt("page")
r, err := task.GetTaskConfigWithLimitList(models.ListOptions{PageSize: 20, Page: page})
if err != nil { if err != nil {
ctx.JSON(http.StatusOK, response.ServerError(err.Error())) ctx.JSON(http.StatusOK, response.ServerError(err.Error()))
return return
@@ -17,9 +20,23 @@ func GetTaskConfigList(ctx *context.Context) {
ctx.JSON(http.StatusOK, response.SuccessWithData(r)) ctx.JSON(http.StatusOK, response.SuccessWithData(r))
} }


func AddTaskConfig(ctx *context.Context, config models.TaskConfigWithLimit) {
err := task.AddTaskConfig(config, ctx.User)
func OperateTaskConfig(ctx *context.Context, config models.TaskConfigWithLimit) {
action := ctx.Params(":action")

var err error
switch action {
case "edit":
err = task.EditTaskConfig(config, ctx.User)
case "new":
err = task.AddTaskConfig(config, ctx.User)
case "del":
err = task.DelTaskConfig(config.TaskCode)
default:
err = errors.New("action type error")
}

if err != nil { if err != nil {
log.Error("OperateTaskConfig error ,%v", err)
ctx.JSON(http.StatusOK, response.ServerError(err.Error())) ctx.JSON(http.StatusOK, response.ServerError(err.Error()))
return return
} }


+ 11
- 0
services/reward/limiter/limiter.go View File

@@ -245,3 +245,14 @@ func GetLimitersByLimitType(limitType models.LimitType) ([]models.LimitConfig, e


return limiters, nil return limiters, nil
} }

func GetLimitersByLimitTypeWithDeleted(limitType models.LimitType) ([]models.LimitConfig, error) {
limiters, err := models.GetLimitersByLimitTypeWithDeleted(limitType)
if err != nil {
if models.IsErrRecordNotExist(err) {
return nil, nil
}
return nil, err
}
return limiters, nil
}

+ 47
- 3
services/task/task_config.go View File

@@ -52,8 +52,20 @@ func GetTaskConfigList() ([]*models.TaskConfig, error) {
return config, nil return config, nil
} }


func GetTaskConfigWithLimitList() ([]*models.TaskConfigWithLimit, error) {
list, err := GetTaskConfigList()
func GetTaskConfigPageWithDeleted(opt models.ListOptions) ([]*models.TaskConfig, error) {
config, err := models.GetTaskConfigPageWithDeleted(opt)
if err != nil {
log.Error(" GetTaskConfigPageWithDeleted from model error. %v", err)
if models.IsErrRecordNotExist(err) {
return nil, nil
}
return nil, err
}
return config, nil
}

func GetTaskConfigWithLimitList(opt models.ListOptions) ([]*models.TaskConfigWithLimit, error) {
list, err := GetTaskConfigPageWithDeleted(opt)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -61,7 +73,7 @@ func GetTaskConfigWithLimitList() ([]*models.TaskConfigWithLimit, error) {
return nil, nil return nil, nil
} }
r := make([]*models.TaskConfigWithLimit, 0) r := make([]*models.TaskConfigWithLimit, 0)
l, err := limiter.GetLimitersByLimitType(models.LimitTypeTask)
l, err := limiter.GetLimitersByLimitTypeWithDeleted(models.LimitTypeTask)
if err != nil { if err != nil {
log.Error(" GetLimitersByLimitType from redis error. %v", err) log.Error(" GetLimitersByLimitType from redis error. %v", err)
return nil, err return nil, err
@@ -90,10 +102,27 @@ func GetTaskConfigWithLimitList() ([]*models.TaskConfigWithLimit, error) {
} }


func AddTaskConfig(config models.TaskConfigWithLimit, doer *models.User) error { func AddTaskConfig(config models.TaskConfigWithLimit, doer *models.User) error {
t, err := models.GetTaskConfigByTaskCode(config.TaskCode)
if err != nil && !models.IsErrRecordNotExist(err) {
return err
}
if t != nil {
return errors.New("task config is exist")
}

return EditTaskConfig(config, doer)
}

func EditTaskConfig(config models.TaskConfigWithLimit, doer *models.User) error {
if config.TaskCode == "" || config.AwardType == "" { if config.TaskCode == "" || config.AwardType == "" {
log.Error(" AddTaskConfig param error") log.Error(" AddTaskConfig param error")
return errors.New("param error") return errors.New("param error")
} }
for i, l := range config.Limiters {
if l.Scope == "" {
config.Limiters[i].Scope = models.LimitScopeSingleUser.Name()
}
}
err := models.AddTaskConfig(config, doer) err := models.AddTaskConfig(config, doer)
if err != nil { if err != nil {
log.Error("add task config error,config:%v err:%v", config, err) log.Error("add task config error,config:%v err:%v", config, err)
@@ -103,3 +132,18 @@ func AddTaskConfig(config models.TaskConfigWithLimit, doer *models.User) error {
redis_client.Del(redis_key.TaskConfigList()) redis_client.Del(redis_key.TaskConfigList())
return nil return nil
} }

func DelTaskConfig(taskCode string) error {
if taskCode == "" {
log.Error(" AddTaskConfig param error")
return errors.New("param error")
}
err := models.DelTaskConfig(taskCode)
if err != nil {
log.Error("del task config error,err:%v", err)
return err
}
redis_client.Del(redis_key.LimitConfig(models.LimitTypeTask.Name()))
redis_client.Del(redis_key.TaskConfigList())
return nil
}

Loading…
Cancel
Save