89 lines
1.9 KiB
Go
89 lines
1.9 KiB
Go
package service
|
|
|
|
import (
|
|
"time"
|
|
|
|
"go-admin/app/admin/models"
|
|
"go-admin/app/jobs"
|
|
"go-admin/common/dto"
|
|
"go-admin/common/log"
|
|
"go-admin/common/service"
|
|
"go-admin/tools/app/msg"
|
|
)
|
|
|
|
type SysJob struct {
|
|
service.Service
|
|
}
|
|
|
|
// RemoveJob 删除job
|
|
func (e *SysJob) RemoveJob(c *dto.GeneralDelDto) error {
|
|
var err error
|
|
var data models.SysJob
|
|
msgID := e.MsgID
|
|
data.JobId = c.Id
|
|
err = e.Orm.Table(data.TableName()).First(&data).Error
|
|
if err != nil {
|
|
log.Errorf("msgID[%s] db error:%s", msgID, err)
|
|
return err
|
|
}
|
|
cn := jobs.Remove(data.EntryId)
|
|
|
|
select {
|
|
case res := <-cn:
|
|
if res {
|
|
err = e.Orm.Table(data.TableName()).Where("entry_id = ?", data.EntryId).Update("entry_id", 0).Error
|
|
if err != nil {
|
|
log.Errorf("msgID[%s] db error:%s", msgID, err)
|
|
}
|
|
return err
|
|
}
|
|
case <-time.After(time.Second * 1):
|
|
e.Msg = msg.TimeOut
|
|
return nil
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// StartJob 启动任务
|
|
func (e *SysJob) StartJob(c *dto.GeneralGetDto) error {
|
|
var data models.SysJob
|
|
var err error
|
|
msgID := e.MsgID
|
|
err = e.Orm.Table(data.TableName()).First(&data, c.Id).Error
|
|
if err != nil {
|
|
log.Errorf("msgID[%s] db error:%s", msgID, err)
|
|
return err
|
|
}
|
|
if data.JobType == 1 {
|
|
var j = &jobs.HttpJob{}
|
|
j.InvokeTarget = data.InvokeTarget
|
|
j.CronExpression = data.CronExpression
|
|
j.JobId = data.JobId
|
|
j.Name = data.JobName
|
|
data.EntryId, err = jobs.AddJob(j)
|
|
if err != nil {
|
|
log.Errorf("msgID[%s] jobs AddJob[HttpJob] error:%s", msgID, err)
|
|
}
|
|
} else {
|
|
var j = &jobs.ExecJob{}
|
|
j.InvokeTarget = data.InvokeTarget
|
|
j.CronExpression = data.CronExpression
|
|
j.JobId = data.JobId
|
|
j.Name = data.JobName
|
|
j.Args = data.Args
|
|
data.EntryId, err = jobs.AddJob(j)
|
|
if err != nil {
|
|
log.Errorf("msgID[%s] jobs AddJob[ExecJob] error:%s", msgID, err)
|
|
}
|
|
}
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
err = e.Orm.Table(data.TableName()).Where(c.Id).Updates(&data).Error
|
|
if err != nil {
|
|
log.Errorf("msgID[%s] db error:%s", msgID, err)
|
|
}
|
|
return err
|
|
}
|