Преглед на файлове

feat: :art: 任务立即执行

tiansin преди 4 години
родител
ревизия
7fe5497686
променени са 3 файла, в които са добавени 37 реда и са изтрити 1 реда
  1. 15 0
      app/system/api/sys_job.go
  2. 2 0
      app/system/router/router.go
  3. 20 1
      app/system/service/sys_job.go

+ 15 - 0
app/system/api/sys_job.go

@@ -10,6 +10,7 @@ package api
 import (
 import (
 	"gfast/app/system/dao"
 	"gfast/app/system/dao"
 	"gfast/app/system/service"
 	"gfast/app/system/service"
+
 	"github.com/gogf/gf/frame/g"
 	"github.com/gogf/gf/frame/g"
 	"github.com/gogf/gf/net/ghttp"
 	"github.com/gogf/gf/net/ghttp"
 	"github.com/gogf/gf/util/gvalid"
 	"github.com/gogf/gf/util/gvalid"
@@ -105,6 +106,20 @@ func (c *sysJob) Stop(r *ghttp.Request) {
 	c.SusJsonExit(r, "定时任务管理停止成功")
 	c.SusJsonExit(r, "定时任务管理停止成功")
 }
 }
 
 
+// Run 执行任务
+func (c *sysJob) Run(r *ghttp.Request) {
+	id := r.GetInt64("id")
+	job, err := service.SysJob.GetJobInfoById(id)
+	if err != nil {
+		c.FailJsonExit(r, err.Error())
+	}
+	err = service.SysJob.JobRun(job)
+	if err != nil {
+		c.FailJsonExit(r, "定时任务管理执行"+err.Error())
+	}
+	c.SusJsonExit(r, "定时任务管理执行成功")
+}
+
 // Delete 删除任务
 // Delete 删除任务
 func (c *sysJob) Delete(r *ghttp.Request) {
 func (c *sysJob) Delete(r *ghttp.Request) {
 	ids := r.GetInts("ids")
 	ids := r.GetInts("ids")

+ 2 - 0
app/system/router/router.go

@@ -10,6 +10,7 @@ package router
 import (
 import (
 	"gfast/app/system/api"
 	"gfast/app/system/api"
 	"gfast/middleware"
 	"gfast/middleware"
+
 	"github.com/gogf/gf/frame/g"
 	"github.com/gogf/gf/frame/g"
 	"github.com/gogf/gf/net/ghttp"
 	"github.com/gogf/gf/net/ghttp"
 )
 )
@@ -132,6 +133,7 @@ func init() {
 					group.PUT("edit", api.SysJob.Edit)
 					group.PUT("edit", api.SysJob.Edit)
 					group.PUT("start", api.SysJob.Start)
 					group.PUT("start", api.SysJob.Start)
 					group.PUT("stop", api.SysJob.Stop)
 					group.PUT("stop", api.SysJob.Stop)
+					group.PUT("run", api.SysJob.Run)
 					group.DELETE("delete", api.SysJob.Delete)
 					group.DELETE("delete", api.SysJob.Delete)
 				})
 				})
 				//服务监控
 				//服务监控

+ 20 - 1
app/system/service/sys_job.go

@@ -11,12 +11,13 @@ import (
 	comModel "gfast/app/common/model"
 	comModel "gfast/app/common/model"
 	"gfast/app/system/dao"
 	"gfast/app/system/dao"
 	"gfast/app/system/model"
 	"gfast/app/system/model"
+	"strings"
+
 	"github.com/gogf/gf/container/gset"
 	"github.com/gogf/gf/container/gset"
 	"github.com/gogf/gf/errors/gerror"
 	"github.com/gogf/gf/errors/gerror"
 	"github.com/gogf/gf/frame/g"
 	"github.com/gogf/gf/frame/g"
 	"github.com/gogf/gf/os/gcron"
 	"github.com/gogf/gf/os/gcron"
 	"github.com/gogf/gf/util/gconv"
 	"github.com/gogf/gf/util/gconv"
-	"strings"
 )
 )
 
 
 type sysJob struct {
 type sysJob struct {
@@ -150,10 +151,28 @@ func (s *sysJob) JobStop(job *model.SysJob) error {
 	return err
 	return err
 }
 }
 
 
+//执行任务
+func (s *sysJob) JobRun(job *model.SysJob) error {
+	//可以task目录下是否绑定对应的方法
+	f := TimeTaskList.GetByName(job.InvokeTarget)
+	if f == nil {
+		return gerror.New("当前task目录下没有绑定这个方法")
+	}
+	//传参
+	paramArr := strings.Split(job.JobParams, "|")
+	TimeTaskList.EditParams(f.FuncName, paramArr)
+	task, err := gcron.AddOnce("@every 1s", f.Run)
+	if err != nil || task == nil {
+		return gerror.New("启动执行失败")
+	}
+	return nil
+}
+
 // DeleteJobByIds 删除任务
 // DeleteJobByIds 删除任务
 func (s *sysJob) DeleteJobByIds(ids []int) (err error) {
 func (s *sysJob) DeleteJobByIds(ids []int) (err error) {
 	if len(ids) == 0 {
 	if len(ids) == 0 {
 		err = gerror.New("参数错误")
 		err = gerror.New("参数错误")
+		return
 	}
 	}
 	gst := gset.NewFrom(ids)
 	gst := gset.NewFrom(ids)
 	var jobs []*model.SysJob
 	var jobs []*model.SysJob