calcTask.go 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  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. deviceCtl "iot_manager_service/app/device/controller"
  10. deviceSer "iot_manager_service/app/device/service"
  11. recordCtl "iot_manager_service/app/record/controller"
  12. warnSer "iot_manager_service/app/warn/service"
  13. "iot_manager_service/util/cache"
  14. "iot_manager_service/util/logger"
  15. "net/http"
  16. "time"
  17. )
  18. func CalcTask() {
  19. hourSpec := "0 0 */1 * * ?"
  20. //minuteSpec := "0 */1 * * * ?"
  21. daySpec := "0 1 0 * * ?"
  22. c := cron.New()
  23. _ = c.AddFunc(hourSpec, func() {
  24. devices := deviceSer.GarbageService.GetAll()
  25. var deviceIds []string
  26. for _, d := range devices {
  27. deviceIds = append(deviceIds, d.DeviceIMei)
  28. }
  29. GarbageDataSync(deviceIds)
  30. })
  31. //【环境传感】日数据 统计
  32. _ = c.AddFunc(hourSpec, func() {
  33. service.EnvironmentDataService.DataSync()
  34. })
  35. //【环境传感】天数据 统计
  36. _ = c.AddFunc(daySpec, func() {
  37. service.EnvironmentDataService.DayDataSync()
  38. })
  39. //【告警管理】处理告警消息 同步告警
  40. c.AddFunc("* */30 * * * ?", func() {
  41. warnSer.PlatformAlarmService.SyncAlarm()
  42. })
  43. //【告警管理】发送告警
  44. _ = c.AddFunc(hourSpec, func() {
  45. //发送告警
  46. warnSer.TaskWarnService.HandlingAlarms()
  47. })
  48. //【一键告警】每59秒 同步记录
  49. c.AddFunc("*/59 * * * * ?", func() {
  50. recordCtl.AKeyAlarmRecord.SosRecordSync()
  51. })
  52. //【led信息屏】每5分钟 同步亮度与音量
  53. c.AddFunc("* */5 * * * ?", func() {
  54. deviceCtl.InfoBoard.CronSyncBrightnessAndMusicvolume()
  55. })
  56. //【led信息屏】每59秒 播放节目同步
  57. c.AddFunc("*/59 * * * * ?", func() {
  58. deviceCtl.InfoBoard.CronSyncLedPaying(0)
  59. })
  60. //【IP音柱】每59秒 播放节目同步
  61. c.AddFunc("*/10 * * * * ?", func() {
  62. deviceCtl.IpBroadcast.CronSyncIpCastPaying(0)
  63. })
  64. c.Start()
  65. }
  66. func GarbageDataSync(deviceIds []string) {
  67. if len(deviceIds) == 0 {
  68. return
  69. }
  70. url := "http://124.239.149.63:5000/admin/garbage/can/getGarbageCanByDeviceIdsList"
  71. req := model.GarbageDataReq{
  72. DeviceIds: deviceIds,
  73. }
  74. data, err := json.Marshal(&req)
  75. if err != nil {
  76. logger.Logger.Warningf("GarbageDataSync Marshal err = %s", err.Error())
  77. return
  78. }
  79. body := bytes.NewBuffer(data)
  80. request, err := http.NewRequest("POST", url, body)
  81. if err != nil {
  82. logger.Logger.Warningf("GarbageDataSync NewRequest err = %s", err.Error())
  83. return
  84. }
  85. request.Header.Set("Authorization", "Bearer "+GarbageLogin())
  86. request.Header.Set("Content-Type", "application/json")
  87. response, err := http.DefaultClient.Do(request)
  88. if err != nil {
  89. logger.Logger.Warningf("GarbageDataSync Do err = %s", err.Error())
  90. return
  91. }
  92. rspData, err := ioutil.ReadAll(response.Body)
  93. if err != nil {
  94. logger.Logger.Warningf("GarbageDataSync ReadAll err = %s", err.Error())
  95. return
  96. }
  97. var rsp model.GarbageDataRsp
  98. err = json.Unmarshal(rspData, &rsp)
  99. if err != nil {
  100. logger.Logger.Warningf("GarbageDataSync Unmarshal err = %s", err.Error())
  101. return
  102. }
  103. if rsp.Code != 0 {
  104. logger.Logger.Warningf("GarbageDataSync rsp.Code != 0 msg = %s", rsp.Msg)
  105. return
  106. }
  107. service.GarbageDataService.BatchSave(rsp.Data)
  108. }
  109. func GarbageLogin() string {
  110. value, err := cache.Redis.Get(model.GarbageLoginKey).Result()
  111. if err == nil {
  112. return value
  113. }
  114. url := "http://124.239.149.63:5000/admin/user/login"
  115. req := model.GarbageLoginReq{
  116. Username: "湖南溢满1",
  117. Password: "T2rMLUCMaaBXfjBjZ7myOA==",
  118. }
  119. data, err := json.Marshal(&req)
  120. if err != nil {
  121. logger.Logger.Warningf("GarbageLogin Marshal err = %s", err.Error())
  122. return ""
  123. }
  124. body := bytes.NewBuffer(data)
  125. request, err := http.NewRequest("POST", url, body)
  126. if err != nil {
  127. logger.Logger.Warningf("GarbageLogin NewRequest err = %s", err.Error())
  128. return ""
  129. }
  130. request.Header.Set("Content-Type", "application/json")
  131. response, err := http.DefaultClient.Do(request)
  132. if err != nil {
  133. logger.Logger.Warningf("GarbageLogin Do err = %s", err.Error())
  134. return ""
  135. }
  136. rspData, err := ioutil.ReadAll(response.Body)
  137. if err != nil {
  138. logger.Logger.Warningf("GarbageLogin ReadAll err = %s", err.Error())
  139. return ""
  140. }
  141. var rsp model.GarbageLoginRsp
  142. err = json.Unmarshal(rspData, &rsp)
  143. if err != nil {
  144. logger.Logger.Warningf("GarbageLogin Unmarshal err = %s", err.Error())
  145. return ""
  146. }
  147. if rsp.Code != 0 {
  148. logger.Logger.Warningf("GarbageLogin rsp.Code != 0 msg = %s", rsp.Msg)
  149. return ""
  150. }
  151. cache.Redis.Set(model.GarbageLoginKey, rsp.Data.AccessToken, 2*time.Hour)
  152. return rsp.Data.AccessToken
  153. }