package cmd import ( "fmt" "github.com/gin-gonic/gin" "github.com/spf13/cast" "os/exec" "strings" "tools/logic/cutil" "tools/logic/orm" ) func Cmd(cxt *gin.Context) { cmd := cxt.PostForm("cmd") c := exec.Command("bash", "-c", cmd) e := c.Run() fmt.Println(e) } func CreateTask(ctx *gin.Context) { taskId := ctx.PostForm("task_id") process := ctx.PostForm("process") Type := ctx.PostForm("type") params := ctx.PostForm("params") status := ctx.PostForm("status") total := ctx.PostForm("total") thread := ctx.PostForm("thread") weight := ctx.PostForm("weight") script := ctx.PostForm("script") task := orm.Get[*Task](cast.ToInt64(taskId)) if task != nil { task.Thread = cast.ToInt(thread) task.Status = cast.ToInt(status) return } task = &Task{ TaskId: cast.ToInt64(taskId), Type: Type, Params: params, Status: noRun, Process: cast.ToInt64(process), Total: cast.ToInt64(total), Thread: cast.ToInt(thread), Weight: cast.ToInt32(weight), Script: script, } orm.Register[*Task](task) orm.Save() } func GetTask(ctx *gin.Context) { taskId := ctx.Request.URL.Query().Get("task_id") task := orm.Get[*Task](cast.ToInt64(taskId)) if task != nil { ctx.JSON(200, task) return } ctx.JSON(500, nil) } func ClearAll(ctx *gin.Context) { clearAll() ctx.JSON(200, nil) } func GetAllTask(ctx *gin.Context) { ctx.JSON(200, orm.GetAll[*Task]()) } func GetAllTaskByIds(ctx *gin.Context) { taskIds := ctx.Request.URL.Query().Get("task_ids") ids := strings.Split(taskIds, ",") var result = make(map[int64]*Task) for _, id := range ids { task := orm.Get[*Task](cast.ToInt64(id)) if task != nil { result[task.TaskId] = task } } ctx.JSON(200, result) } func DelTask(ctx *gin.Context) { id := ctx.Request.URL.Query().Get("task_id") taskId := cast.ToInt64(id) err := orm.Delete[*Task](taskId, func(task *Task) { task.Lock() cutil.DeleteLog(task.TaskId) task.delete() task.Unlock() }) if err != nil { ctx.JSON(500, nil) return } ctx.JSON(200, nil) } func RunTask(ctx *gin.Context) { taskId := ctx.PostForm("task_id") thread := ctx.PostForm("process") task := orm.Get[*Task](cast.ToInt64(taskId)) if task == nil { fmt.Println("task not found") return } task.Lock() defer task.Unlock() cutil.DeleteLog(task.TaskId) task.Thread = cast.ToInt(thread) task.run() } func StopTask(ctx *gin.Context) { id := ctx.Request.URL.Query().Get("task_id") task := orm.Get[*Task](cast.ToInt64(id)) if task == nil { return } task.Lock() defer task.Unlock() task.Stop() }