edb_monitor_message.go 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. package edbmonitor
  2. import (
  3. "errors"
  4. "eta/eta_api/global"
  5. "eta/eta_api/models"
  6. edbmonitor "eta/eta_api/models/edb_monitor"
  7. "eta/eta_api/models/edb_monitor/response"
  8. "eta/eta_api/utils"
  9. "time"
  10. "github.com/rdlucklib/rdluck_tools/paging"
  11. )
  12. func ReadEdbMonitorMessage(messageId, adminId int) (msg string, err error) {
  13. message, err := edbmonitor.GetEdbMonitorMessageById(messageId)
  14. if err != nil {
  15. if utils.IsErrNoRow(err) {
  16. msg = "消息不存在"
  17. return
  18. }
  19. msg = "获取消息失败"
  20. return
  21. }
  22. if message.AdminId != adminId {
  23. msg = "您没有权限查看该消息"
  24. err = errors.New("no permission")
  25. return
  26. }
  27. message.IsRead = 1
  28. err = message.Update([]string{"IsRead"})
  29. if err != nil {
  30. msg = "已读失败"
  31. return
  32. }
  33. return
  34. }
  35. func ReadEdbMonitorMessageList(messageId []int, adminId int) (msg string, err error) {
  36. err = edbmonitor.BatchModifyEdbMonitorMessageIsRead(messageId, adminId)
  37. if err != nil {
  38. msg = "已读失败"
  39. return
  40. }
  41. return
  42. }
  43. // func EdbMonitorMessageHealth(adminId int) (isClose bool, err error) {
  44. // conn := MonitorMessageConn[adminId]
  45. // if conn == nil {
  46. // err = errors.New("no connection")
  47. // isClose = true
  48. // return
  49. // }
  50. // _, msg, err := conn.ReadMessage()
  51. // if err != nil {
  52. // isClose = true
  53. // return
  54. // }
  55. // if string(msg) == "ping" {
  56. // healthKey := EDB_MONITOR_MESSAGE_CONNECT_CACHE + strconv.Itoa(adminId)
  57. // err = utils.Rc.Put(healthKey, "1", time.Minute*1)
  58. // if err != nil {
  59. // return
  60. // }
  61. // }
  62. // return
  63. // }
  64. func LogMessage(content, uniqueCode string, triggerTime time.Time, edbInfoId, edbInfoType, adminId, isRead, classifyId int) (err error) {
  65. message := &edbmonitor.EdbMonitorMessage{
  66. EdbInfoId: edbInfoId,
  67. EdbInfoType: edbInfoType,
  68. EdbUniqueCode: uniqueCode,
  69. EdbClassifyId: classifyId,
  70. AdminId: adminId,
  71. IsRead: isRead,
  72. Message: content + "触发预警",
  73. MonitorTriggerTime: triggerTime,
  74. CreateTime: time.Now(),
  75. }
  76. _, err = message.Insert()
  77. return err
  78. }
  79. func SendMessages(adminId, edbInfoId, edbInfoType int, classifyId int, edbUniqueCode, message string, triggerTime string) (err error) {
  80. conn := global.MonitorMessageConn[adminId]
  81. if conn == nil {
  82. return errors.New("no connection")
  83. }
  84. resp := models.WebsocketMessageResponse{
  85. MessageType: 0,
  86. Data: response.EdbMonitorMessageResp{
  87. EdbInfoId: edbInfoId,
  88. EdbInfoType: edbInfoType,
  89. EdbUniqueCode: edbUniqueCode,
  90. EdbClassifyId: classifyId,
  91. Message: message,
  92. TriggerTime: triggerTime,
  93. },
  94. }
  95. return conn.WriteJSON(resp)
  96. }
  97. func GetHistoryMessages(adminId int) (items []*response.EdbMonitorMessageResp, err error) {
  98. messageList, err := edbmonitor.GetEdbMonitorMessageByAdminId(adminId)
  99. if err != nil {
  100. return
  101. }
  102. items = toEdbMonitorMessageResp(messageList)
  103. return
  104. }
  105. func GetMessageList(adminid int, currentIndex, pageSize int) (resp response.EdbMonitorMessageListResp, err error) {
  106. startSize := utils.StartIndex(currentIndex, pageSize)
  107. total, err := edbmonitor.GetEdbMonitorMessageCountByAdminId(adminid)
  108. if err != nil {
  109. return
  110. }
  111. if total == 0 {
  112. resp.List = make([]*response.EdbMonitorMessageResp, 0)
  113. resp.Paging = paging.GetPaging(currentIndex, pageSize, total)
  114. return
  115. }
  116. messageList, err := edbmonitor.GetEdbMonitorMessagePageByAdminId(adminid, startSize, pageSize)
  117. if err != nil {
  118. return
  119. }
  120. resp.List = toEdbMonitorMessageResp(messageList)
  121. resp.Paging = paging.GetPaging(currentIndex, pageSize, total)
  122. return
  123. }
  124. func toEdbMonitorMessageResp(items []*edbmonitor.EdbMonitorMessage) (list []*response.EdbMonitorMessageResp) {
  125. list = make([]*response.EdbMonitorMessageResp, 0)
  126. for _, message := range items {
  127. item := response.EdbMonitorMessageResp{
  128. EdbMonitorMessageId: message.EdbMonitorMessageId,
  129. EdbInfoId: message.EdbInfoId,
  130. EdbInfoType: message.EdbInfoType,
  131. EdbUniqueCode: message.EdbUniqueCode,
  132. EdbClassifyId: message.EdbClassifyId,
  133. IsRead: message.IsRead,
  134. Message: message.Message,
  135. TriggerTime: utils.TimeTransferString(utils.FormatDateTime, message.MonitorTriggerTime),
  136. }
  137. list = append(list, &item)
  138. }
  139. return
  140. }