calcTask.go 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. package controller
  2. import (
  3. "bytes"
  4. "encoding/json"
  5. "github.com/robfig/cron"
  6. "io/ioutil"
  7. "iot_manager_service/app/data/model"
  8. "iot_manager_service/app/data/service"
  9. device "iot_manager_service/app/device/service"
  10. system "iot_manager_service/app/system/dao"
  11. warnService "iot_manager_service/app/warn/service"
  12. "iot_manager_service/util/cache"
  13. "iot_manager_service/util/logger"
  14. "net/http"
  15. "time"
  16. )
  17. func CalcTask() {
  18. hourSpec := "0 0 */1 * * ?"
  19. //minuteSpec := "0 */1 * * * ?"
  20. daySpec := "0 1 0 * * ?"
  21. c := cron.New()
  22. _ = c.AddFunc(hourSpec, func() {
  23. devices := device.GarbageService.GetAll()
  24. var deviceIds []string
  25. for _, d := range devices {
  26. deviceIds = append(deviceIds, d.DeviceIMei)
  27. }
  28. GarbageDataSync(deviceIds)
  29. })
  30. _ = c.AddFunc(hourSpec, func() {
  31. service.EnvironmentDataService.DataSync()
  32. })
  33. _ = c.AddFunc(daySpec, func() {
  34. service.EnvironmentDataService.DayDataSync()
  35. })
  36. //处理告警消息
  37. _ = c.AddFunc(hourSpec, func() {
  38. //抓取数据
  39. tenant := system.Tenant{}
  40. tenants, _, _ := tenant.GetTenants(0, 1000)
  41. for _, t := range tenants {
  42. warnService.PlatformAlarmService.Refresh(int(t.TenantId))
  43. }
  44. //发送告警
  45. warnService.TaskWarnService.HandlingAlarms()
  46. })
  47. //每天早上07:10同步亮度与音量
  48. c.AddFunc("0 10 7 * * ?", func() {
  49. //c.AddFunc("*/10 * * * * ?", func() {
  50. device.InfoBoardService.CronSyncBrightnessAndMusicvolume()
  51. })
  52. //每天晚上18:10同步亮度与音量
  53. c.AddFunc("0 10 18 * * ?", func() {
  54. //device.InfoBoardService.CronSyncBrightnessAndMusicvolume()
  55. })
  56. c.Start()
  57. }
  58. func GarbageDataSync(deviceIds []string) {
  59. if len(deviceIds) == 0 {
  60. return
  61. }
  62. url := "http://124.239.149.63:5000/admin/garbage/can/getGarbageCanByDeviceIdsList"
  63. req := model.GarbageDataReq{
  64. DeviceIds: deviceIds,
  65. }
  66. data, err := json.Marshal(&req)
  67. if err != nil {
  68. logger.Logger.Warningf("GarbageDataSync Marshal err = %s", err.Error())
  69. return
  70. }
  71. body := bytes.NewBuffer(data)
  72. request, err := http.NewRequest("POST", url, body)
  73. if err != nil {
  74. logger.Logger.Warningf("GarbageDataSync NewRequest err = %s", err.Error())
  75. return
  76. }
  77. request.Header.Set("Authorization", "Bearer "+GarbageLogin())
  78. request.Header.Set("Content-Type", "application/json")
  79. response, err := http.DefaultClient.Do(request)
  80. if err != nil {
  81. logger.Logger.Warningf("GarbageDataSync Do err = %s", err.Error())
  82. return
  83. }
  84. rspData, err := ioutil.ReadAll(response.Body)
  85. if err != nil {
  86. logger.Logger.Warningf("GarbageDataSync ReadAll err = %s", err.Error())
  87. return
  88. }
  89. var rsp model.GarbageDataRsp
  90. err = json.Unmarshal(rspData, &rsp)
  91. if err != nil {
  92. logger.Logger.Warningf("GarbageDataSync Unmarshal err = %s", err.Error())
  93. return
  94. }
  95. if rsp.Code != 0 {
  96. logger.Logger.Warningf("GarbageDataSync rsp.Code != 0 msg = %s", rsp.Msg)
  97. return
  98. }
  99. service.GarbageDataService.BatchSave(rsp.Data)
  100. }
  101. func GarbageLogin() string {
  102. value, err := cache.Redis.Get(model.GarbageLoginKey).Result()
  103. if err == nil {
  104. return value
  105. }
  106. url := "http://124.239.149.63:5000/admin/user/login"
  107. req := model.GarbageLoginReq{
  108. Username: "湖南溢满",
  109. Password: "T2rMLUCMaaBXfjBjZ7myOA==",
  110. }
  111. data, err := json.Marshal(&req)
  112. if err != nil {
  113. logger.Logger.Warningf("GarbageLogin Marshal err = %s", err.Error())
  114. return ""
  115. }
  116. body := bytes.NewBuffer(data)
  117. request, err := http.NewRequest("POST", url, body)
  118. if err != nil {
  119. logger.Logger.Warningf("GarbageLogin NewRequest err = %s", err.Error())
  120. return ""
  121. }
  122. request.Header.Set("Content-Type", "application/json")
  123. response, err := http.DefaultClient.Do(request)
  124. if err != nil {
  125. logger.Logger.Warningf("GarbageLogin Do err = %s", err.Error())
  126. return ""
  127. }
  128. rspData, err := ioutil.ReadAll(response.Body)
  129. if err != nil {
  130. logger.Logger.Warningf("GarbageLogin ReadAll err = %s", err.Error())
  131. return ""
  132. }
  133. var rsp model.GarbageLoginRsp
  134. err = json.Unmarshal(rspData, &rsp)
  135. if err != nil {
  136. logger.Logger.Warningf("GarbageLogin Unmarshal err = %s", err.Error())
  137. return ""
  138. }
  139. if rsp.Code != 0 {
  140. logger.Logger.Warningf("GarbageLogin rsp.Code != 0 msg = %s", rsp.Msg)
  141. return ""
  142. }
  143. cache.Redis.Set(model.GarbageLoginKey, rsp.Data.AccessToken, 2*time.Hour)
  144. return rsp.Data.AccessToken
  145. }