2
0
mirror of https://github.com/acepanel/panel.git synced 2026-02-07 03:17:24 +08:00
Files
panel/app/jobs/process_task.go
2024-06-24 23:10:39 +08:00

60 lines
1.4 KiB
Go

package jobs
import (
"github.com/goravel/framework/facades"
"github.com/TheTNB/panel/app/models"
"github.com/TheTNB/panel/pkg/shell"
)
// ProcessTask 处理面板任务
type ProcessTask struct {
}
// Signature The name and signature of the job.
func (receiver *ProcessTask) Signature() string {
return "process_task"
}
// Handle Execute the job.
func (receiver *ProcessTask) Handle(args ...any) error {
taskID, ok := args[0].(uint)
if !ok {
facades.Log().Tags("面板", "异步任务").With(map[string]any{
"args": args,
}).Infof("参数错误")
return nil
}
var task models.Task
_ = facades.Orm().Query().Where("id = ?", taskID).Get(&task)
if task.ID == 0 {
facades.Log().Tags("面板", "异步任务").With(map[string]any{
"task_id": taskID,
}).Infof("任务不存在")
return nil
}
facades.Log().Tags("面板", "异步任务").With(map[string]any{
"task_id": taskID,
}).Infof("开始执行任务")
if _, err := shell.Execf(task.Shell); err != nil {
task.Status = models.TaskStatusFailed
_ = facades.Orm().Query().Save(&task)
facades.Log().Tags("面板", "异步任务").With(map[string]any{
"task_id": taskID,
"error": err.Error(),
}).Infof("执行任务失败")
return nil
}
task.Status = models.TaskStatusSuccess
_ = facades.Orm().Query().Save(&task)
facades.Log().Tags("面板", "异步任务").With(map[string]any{
"task_id": taskID,
}).Infof("执行任务成功")
return nil
}