sysjob.go 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. package service
  2. import (
  3. "time"
  4. "device-manage/app/admin/models"
  5. "device-manage/app/jobs"
  6. "device-manage/common/dto"
  7. "device-manage/common/log"
  8. "device-manage/common/service"
  9. "device-manage/tools/app/msg"
  10. )
  11. type SysJob struct {
  12. service.Service
  13. }
  14. // RemoveJob 删除job
  15. func (e *SysJob) RemoveJob(c *dto.GeneralDelDto) error {
  16. var err error
  17. var data models.SysJob
  18. msgID := e.MsgID
  19. data.JobId = c.Id
  20. err = e.Orm.Table(data.TableName()).First(&data).Error
  21. if err != nil {
  22. log.Errorf("msgID[%s] db error:%s", msgID, err)
  23. return err
  24. }
  25. cn := jobs.Remove(data.EntryId)
  26. select {
  27. case res := <-cn:
  28. if res {
  29. err = e.Orm.Table(data.TableName()).Where("entry_id = ?", data.EntryId).Update("entry_id", 0).Error
  30. if err != nil {
  31. log.Errorf("msgID[%s] db error:%s", msgID, err)
  32. }
  33. return err
  34. }
  35. case <-time.After(time.Second * 1):
  36. e.Msg = msg.TimeOut
  37. return nil
  38. }
  39. return nil
  40. }
  41. // StartJob 启动任务
  42. func (e *SysJob) StartJob(c *dto.GeneralGetDto) error {
  43. var data models.SysJob
  44. var err error
  45. msgID := e.MsgID
  46. err = e.Orm.Table(data.TableName()).First(&data, c.Id).Error
  47. if err != nil {
  48. log.Errorf("msgID[%s] db error:%s", msgID, err)
  49. return err
  50. }
  51. if data.JobType == 1 {
  52. var j = &jobs.HttpJob{}
  53. j.InvokeTarget = data.InvokeTarget
  54. j.CronExpression = data.CronExpression
  55. j.JobId = data.JobId
  56. j.Name = data.JobName
  57. data.EntryId, err = jobs.AddJob(j)
  58. if err != nil {
  59. log.Errorf("msgID[%s] jobs AddJob[HttpJob] error:%s", msgID, err)
  60. }
  61. } else {
  62. var j = &jobs.ExecJob{}
  63. j.InvokeTarget = data.InvokeTarget
  64. j.CronExpression = data.CronExpression
  65. j.JobId = data.JobId
  66. j.Name = data.JobName
  67. j.Args = data.Args
  68. data.EntryId, err = jobs.AddJob(j)
  69. if err != nil {
  70. log.Errorf("msgID[%s] jobs AddJob[ExecJob] error:%s", msgID, err)
  71. }
  72. }
  73. if err != nil {
  74. return err
  75. }
  76. err = e.Orm.Table(data.TableName()).Where(c.Id).Updates(&data).Error
  77. if err != nil {
  78. log.Errorf("msgID[%s] db error:%s", msgID, err)
  79. }
  80. return err
  81. }