| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- package service
- import (
- "time"
- "device-manage/app/admin/models"
- "device-manage/app/jobs"
- "device-manage/common/dto"
- "device-manage/common/log"
- "device-manage/common/service"
- "device-manage/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
- }
|