Browse Source

定时任务手动执行一次

yxh 4 years ago
parent
commit
4e0255658c
3 changed files with 32 additions and 0 deletions
  1. 14 0
      app/system/api/sys_job.go
  2. 1 0
      app/system/router/router.go
  3. 17 0
      app/system/service/sys_job.go

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

@@ -105,6 +105,20 @@ func (c *sysJob) Stop(r *ghttp.Request) {
 	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 删除任务
 func (c *sysJob) Delete(r *ghttp.Request) {
 	ids := r.GetInts("ids")

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

@@ -137,6 +137,7 @@ func init() {
 					group.PUT("edit", api.SysJob.Edit)
 					group.PUT("start", api.SysJob.Start)
 					group.PUT("stop", api.SysJob.Stop)
+					group.PUT("run", api.SysJob.Run)
 					group.DELETE("delete", api.SysJob.Delete)
 				})
 				//服务监控

+ 17 - 0
app/system/service/sys_job.go

@@ -150,6 +150,23 @@ func (s *sysJob) JobStop(job *model.SysJob) error {
 	return err
 }
 
+// JobRun 执行任务
+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 删除任务
 func (s *sysJob) DeleteJobByIds(ids []int) (err error) {
 	if len(ids) == 0 {