task.go 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. package service
  2. import (
  3. json2 "encoding/json"
  4. "strconv"
  5. "github.com/IceWhaleTech/CasaOS/pkg/config"
  6. httper2 "github.com/IceWhaleTech/CasaOS/pkg/utils/httper"
  7. loger2 "github.com/IceWhaleTech/CasaOS/pkg/utils/loger"
  8. "github.com/IceWhaleTech/CasaOS/service/model"
  9. "github.com/IceWhaleTech/CasaOS/types"
  10. "github.com/tidwall/gjson"
  11. "gorm.io/gorm"
  12. )
  13. type TaskService interface {
  14. List(desc bool) []model.TaskDBModel
  15. Delete(id string)
  16. Add(m *model.TaskDBModel)
  17. Update(m *model.TaskDBModel)
  18. Info(id string) model.TaskDBModel
  19. SyncTaskService()
  20. GetServerTasks() []model.TaskDBModel
  21. }
  22. type taskService struct {
  23. db *gorm.DB
  24. log loger2.OLog
  25. }
  26. func (s *taskService) List(desc bool) []model.TaskDBModel {
  27. var list []model.TaskDBModel
  28. var orderBy string
  29. if !desc {
  30. orderBy = "id"
  31. } else {
  32. orderBy = "id DESC"
  33. }
  34. s.db.Order(orderBy).Where("state=?", types.TASK_STATE_UNCOMPLETE).Find(&list)
  35. return list
  36. }
  37. func (s *taskService) Delete(id string) {
  38. var m model.TaskDBModel
  39. s.db.Where("id = ?", id).Delete(&m)
  40. }
  41. func (s *taskService) Add(m *model.TaskDBModel) {
  42. s.db.Save(m)
  43. }
  44. func (s *taskService) Update(m *model.TaskDBModel) {
  45. s.db.Model(&m).Update("state", m.State)
  46. }
  47. func (s *taskService) taskDirService(id string) model.TaskDBModel {
  48. var m model.TaskDBModel
  49. s.db.Where("id = ?", id).First(&m)
  50. return m
  51. }
  52. func (s *taskService) Info(id string) model.TaskDBModel {
  53. var m model.TaskDBModel
  54. s.db.Where("id = ?", id).Delete(&m)
  55. return m
  56. }
  57. func (s *taskService) GetServerTasks() []model.TaskDBModel {
  58. var count int64
  59. s.db.Model(&model.TaskDBModel{}).Count(&count)
  60. head := make(map[string]string)
  61. t := make(chan string)
  62. go func() {
  63. str := httper2.Get(config.ServerInfo.ServerApi+"/token", nil)
  64. t <- gjson.Get(str, "data").String()
  65. }()
  66. head["Authorization"] = <-t
  67. listS := httper2.Get(config.ServerInfo.ServerApi+"/v1/task/list/0?desc=true", head)
  68. list := []model.TaskDBModel{}
  69. json2.Unmarshal([]byte(gjson.Get(listS, "data").String()), &list)
  70. //go func(list []model.TaskDBModel) {
  71. // for _, dbModel := range list {
  72. // dbModel.Id = 0
  73. // s.db.Create(&dbModel)
  74. // }
  75. //}(list)
  76. return list
  77. }
  78. func (s *taskService) SyncTaskService() {
  79. var count int64
  80. s.db.Model(&model.TaskDBModel{}).Count(&count)
  81. head := make(map[string]string)
  82. t := make(chan string)
  83. go func() {
  84. str := httper2.Get(config.ServerInfo.ServerApi+"/token", nil)
  85. t <- gjson.Get(str, "data").String()
  86. }()
  87. head["Authorization"] = <-t
  88. listS := httper2.Get(config.ServerInfo.ServerApi+"/v1/task/list/"+strconv.Itoa(int(count)), head)
  89. list := []model.TaskDBModel{}
  90. json2.Unmarshal([]byte(gjson.Get(listS, "data").String()), &list)
  91. go func(list []model.TaskDBModel) {
  92. for _, dbModel := range list {
  93. dbModel.Id = 0
  94. s.db.Create(&dbModel)
  95. }
  96. }(list)
  97. }
  98. func SyncTask(db *gorm.DB) {
  99. var count int64
  100. db.Model(&model.TaskDBModel{}).Count(&count)
  101. head := make(map[string]string)
  102. t := make(chan string)
  103. go func() {
  104. str := httper2.Get(config.ServerInfo.ServerApi+"/token", nil)
  105. t <- gjson.Get(str, "data").String()
  106. }()
  107. head["Authorization"] = <-t
  108. listS := httper2.Get(config.ServerInfo.ServerApi+"/v1/task/list/"+strconv.Itoa(int(count)), head)
  109. list := []model.TaskDBModel{}
  110. json2.Unmarshal([]byte(gjson.Get(listS, "data").String()), &list)
  111. go func(list []model.TaskDBModel) {
  112. for _, dbModel := range list {
  113. dbModel.Id = 0
  114. db.Create(&dbModel)
  115. }
  116. }(list)
  117. }
  118. func NewTaskService(db *gorm.DB, log loger2.OLog) TaskService {
  119. return &taskService{db: db, log: log}
  120. }