manager.go 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260
  1. package main
  2. import (
  3. "fmt"
  4. "sparrow/pkg/deviceAlarm"
  5. "sparrow/pkg/deviceStatus"
  6. "sparrow/pkg/online"
  7. "sparrow/pkg/otaUpgrade"
  8. "sparrow/pkg/rpcs"
  9. "sparrow/pkg/scene"
  10. "sparrow/pkg/token"
  11. )
  12. type DeviceManager struct {
  13. onlineManager *online.Manager
  14. tokenHelper *token.Helper
  15. otaManager *otaUpgrade.OtaManager
  16. statusManager *deviceStatus.DevStatusManager
  17. alarmManager *deviceAlarm.DevAlarmManager
  18. sceneManager *scene.Manager
  19. }
  20. func NewDeviceManager(redishost string, port, db int) *DeviceManager {
  21. mgr := online.NewManager(redishost, port, db)
  22. helper := token.NewHelper(redishost, port, db)
  23. otaMgr := otaUpgrade.NewOtaManager(redishost, port, db)
  24. statusMgr := deviceStatus.NewDevStatusManager(redishost, port)
  25. alarmMgr := deviceAlarm.NewDevAlarmManager(redishost, port)
  26. sceneMgr := scene.NewSceneManager(redishost, port)
  27. return &DeviceManager{
  28. onlineManager: mgr,
  29. tokenHelper: helper,
  30. otaManager: otaMgr,
  31. statusManager: statusMgr,
  32. alarmManager: alarmMgr,
  33. sceneManager: sceneMgr,
  34. }
  35. }
  36. func (dm *DeviceManager) GenerateDeviceAccessToken(args rpcs.ArgsGenerateDeviceAccessToken, reply *rpcs.ReplyGenerateDeviceAccessToken) error {
  37. token, err := dm.tokenHelper.GenerateToken(args.Id)
  38. if err != nil {
  39. return err
  40. }
  41. reply.AccessToken = token
  42. return nil
  43. }
  44. func (dm *DeviceManager) ValidateDeviceAccessToken(args rpcs.ArgsValidateDeviceAccessToken, reply *rpcs.ReplyValidateDeviceAccessToken) error {
  45. return dm.tokenHelper.ValidateToken(args.Id, args.AccessToken)
  46. }
  47. func (dm *DeviceManager) GetOnline(args rpcs.ArgsGetOnline, reply *rpcs.ReplyGetOnline) error {
  48. return dm.onlineManager.GetOnline(args.Id, online.Status{
  49. ClientIP: args.ClientIP,
  50. AccessRPCHost: args.AccessRPCHost,
  51. HeartbeatInterval: args.HeartbeatInterval,
  52. })
  53. }
  54. func (dm *DeviceManager) GetOnlineV2(args rpcs.ArgsGetOnline, reply *rpcs.ReplyGetOnline) error {
  55. return dm.onlineManager.GetOnlineV2(args.Id, online.Status{
  56. ClientIP: args.ClientIP,
  57. AccessRPCHost: args.AccessRPCHost,
  58. HeartbeatInterval: args.HeartbeatInterval,
  59. })
  60. }
  61. func (dm *DeviceManager) HeartBeat(args rpcs.ArgsHeartBeat, reply *rpcs.ReplyHeartBeat) error {
  62. return dm.onlineManager.SetHeartbeat(args.Id)
  63. }
  64. func (dm *DeviceManager) GetOffline(args rpcs.ArgsGetOffline, reply *rpcs.ReplyGetOffline) error {
  65. return dm.onlineManager.GetOffline(args.Id)
  66. }
  67. func (dm *DeviceManager) GetDeviceOnlineStatus(args rpcs.ArgsGetDeviceOnlineStatus, reply *rpcs.ReplyGetDeviceOnlineStatus) error {
  68. status, err := dm.onlineManager.GetStatus(args.Id)
  69. if err != nil {
  70. return err
  71. }
  72. if status != nil {
  73. reply.ClientIP = status.ClientIP
  74. reply.AccessRPCHost = status.AccessRPCHost
  75. reply.HeartbeatInterval = status.HeartbeatInterval
  76. }
  77. return nil
  78. }
  79. func (dm *DeviceManager) SavaFile(args rpcs.ArgsOtaFile, reply *rpcs.ReplyGetOffline) error {
  80. err := dm.otaManager.SavaFile(args.FileId, args.FileData)
  81. if err != nil {
  82. return err
  83. }
  84. return nil
  85. }
  86. func (dm *DeviceManager) GetFile(args rpcs.ArgsOtaFile, reply *rpcs.ReplyOtaFile) error {
  87. file, err := dm.otaManager.GetFile(args.FileId)
  88. if err != nil {
  89. return err
  90. }
  91. if file != nil {
  92. reply.File = file.FileData
  93. }
  94. return nil
  95. }
  96. func (dm *DeviceManager) UpdateProgress(args rpcs.ArgsOtaProgress, reply *rpcs.ReplyGetOffline) error {
  97. err := dm.otaManager.UpdateProgress(args.DeviceId, args.Progress)
  98. if err != nil {
  99. return err
  100. }
  101. return nil
  102. }
  103. func (dm *DeviceManager) GetProgress(args rpcs.ArgsOtaProgress, reply *rpcs.ReplyOtaProgress) error {
  104. progress, err := dm.otaManager.GetProgress(args.DeviceId)
  105. if err != nil {
  106. return err
  107. }
  108. if progress != nil {
  109. reply.Progress = progress.Progress
  110. }
  111. return nil
  112. }
  113. func (dm *DeviceManager) GetDeviceStatus(args rpcs.ArgsGetStatus, reply *rpcs.ReplyStatus) error {
  114. status, err := dm.statusManager.GetDeviceStatus(args.Id, args.ProductId)
  115. if err != nil {
  116. return err
  117. }
  118. if status != "" {
  119. reply.Status = status
  120. }
  121. return nil
  122. }
  123. func (dm *DeviceManager) GetDeviceInfo(args rpcs.ArgsGetStatus, reply *rpcs.ReplayInfo) error {
  124. info, err := dm.statusManager.GetDeviceInfo(args.Id, args.ProductId)
  125. if err != nil {
  126. return err
  127. }
  128. if info != "" {
  129. reply.Info = info
  130. }
  131. return nil
  132. }
  133. func (dm *DeviceManager) GetDeviceEvent(args rpcs.ArgsGetStatus, reply *rpcs.ReplayEvent) error {
  134. event, err := dm.statusManager.GetDeviceEvent(args.Id, args.ProductId)
  135. if err != nil {
  136. return err
  137. }
  138. if event != "" {
  139. reply.Event = event
  140. }
  141. return nil
  142. }
  143. func (dm *DeviceManager) GetDeviceStatusByKey(args rpcs.ArgsGetStatus, reply *rpcs.ReplyStatus) error {
  144. status, err := dm.statusManager.GetDeviceStatusByKey(args.Key)
  145. if err != nil {
  146. return err
  147. }
  148. if status != "" {
  149. reply.Status = status
  150. }
  151. return nil
  152. }
  153. func (dm *DeviceManager) GetWeatherInfo(args rpcs.ArgsGetWeather, reply *rpcs.ReplayWeatherInfo) error {
  154. info, err := dm.statusManager.GetWeatherInfo(args.Location)
  155. if err != nil {
  156. return err
  157. }
  158. if info != "" {
  159. reply.Info = info
  160. }
  161. return nil
  162. }
  163. func (dm *DeviceManager) SetWeatherInfo(args rpcs.ArgsSetWeather, reply *rpcs.ReplyEmptyResult) error {
  164. return dm.statusManager.SetWeatherInfo(args.Location, args.Info)
  165. }
  166. func (dm *DeviceManager) SetAlarm(args rpcs.ArgsAlarmInfo, reply *rpcs.ArgsAlarmInfo) error {
  167. return dm.alarmManager.SetAlarm(&deviceAlarm.AlarmParams{
  168. DeviceCode: args.DeviceCode,
  169. FirstReportTime: args.FirstReportTime,
  170. LastAlarmTime: args.LastAlarmTime,
  171. })
  172. }
  173. func (dm *DeviceManager) GetAlarm(args rpcs.ArgsGetAlarm, reply *rpcs.ReplayAlarm) error {
  174. info, err := dm.alarmManager.GetAlarm(args.DeviceCode)
  175. if err != nil {
  176. return err
  177. }
  178. if info != nil {
  179. reply.AlarmParams = info
  180. }
  181. return nil
  182. }
  183. func (dm *DeviceManager) DelAlarm(args rpcs.ArgsGetAlarm, reply *rpcs.ReplayAlarm) error {
  184. return dm.alarmManager.DeleteAlarm(args.DeviceCode)
  185. }
  186. func (dm *DeviceManager) GetAllScenesPage(args rpcs.ArgsGetAllScene, reply *rpcs.ReplyScenes) error {
  187. result, err := dm.sceneManager.GetAllScenesPage(args.Code, args.Pi, args.Ps)
  188. if err != nil {
  189. return err
  190. }
  191. fmt.Printf("GetAllScenesPage: %v\r\n", result)
  192. if len(result.Data) > 0 {
  193. reply.Total = result.Total
  194. reply.Result = result.Data
  195. }
  196. fmt.Println("1111111111111111111")
  197. return nil
  198. }
  199. func (dm *DeviceManager) GetAllScenes(args rpcs.ArgsGetAllScene, reply *rpcs.ReplyScenes) error {
  200. result, err := dm.sceneManager.GetAllScenes(args.Code)
  201. if err != nil {
  202. return err
  203. }
  204. if len(result) > 0 {
  205. reply.Result = result
  206. }
  207. return nil
  208. }
  209. func (dm *DeviceManager) SaveScene(args rpcs.ArgsScene, reply *rpcs.ReplyScene) error {
  210. return dm.sceneManager.SaveScene(&scene.Info{
  211. Key: args.Key,
  212. SceneId: args.SceneId,
  213. TaskId: args.TaskId,
  214. Config: args.Config,
  215. })
  216. }
  217. func (dm *DeviceManager) GetScene(args rpcs.ArgsScene, reply *rpcs.ReplyScene) error {
  218. info, err := dm.sceneManager.GetScene(args.Key)
  219. if err != nil {
  220. return err
  221. }
  222. if info != "" {
  223. reply.Config = info
  224. }
  225. return nil
  226. }
  227. func (dm *DeviceManager) DeleteScene(args rpcs.ArgsScene, reply *rpcs.ReplyScene) error {
  228. return dm.sceneManager.DeleteScene(args.Key)
  229. }